Heim  >  Artikel  >  Datenbank  >  探索对Informix JDBC驱动程序使用可调用语句的存储过程的执行

探索对Informix JDBC驱动程序使用可调用语句的存储过程的执行

WBOY
WBOYOriginal
2016-06-07 17:54:411365Durchsuche

为了提高关系数据库应用程序的性能,通常会使用存储过程,存储过程只不过是用户定义的功能,其中包含存储在数据库中的一系列 SQL 语句。在本文中,我们将演示如何通过对 Informix JDBC 驱动程序使用可调用语句来访问存储过程。

JDBC CallableStatement 扩展了 PreparedStatement,并向发送请求,以执行用于复杂操作(比如返回值或使用输入和输出存储过程参数)的存储过程。

在关系应用程序中,与单个 SQL 语句相比,使用存储过程的主要优势在于查询计划(或执行计划)是在创建存储过程时生成的,并且需要对存储过程的每次执行重用相同的查询计划,这节省了服务器中的大量资源。创建存储过程之后,任何数据库客户端(如 JDBC 应用程序)都可以随意调用这些过程,无需制定新的执行计划。

使用存储过程的方式因数据库服务器而异。数据库管理系统 (DBMS),如 Informix 和 DB2®,使用不同的 SQL 语法来执行存储过程。当应用程序开发人员需要编写以多个 DBMS 为目标的代码时,这使得事情变得更加困难。可调用语句提供了一个在所有 DBMS 系统中使用相同的 SQL 语句的执行存储过程的方法。

为何使用存储过程?

假设我们有一个 JDBC 应用程序,该应用程序需要高效地一次又一次重复某个任务序列。我们可能希望使用 Java™ 方法,但我们希望进行多少次客户端/服务器通信来发送和接收数据呢?数据库服务器将为应用程序发送的每个 SQL 语句准备并生成一个查询计划,这将占用一些 CPU 时间。尽管考虑到了性能,但对一个 SQL 语句使用简单的 Java 方法可能不太好。

使用存储过程(它只是一次性任务)会怎么样呢?创建一个 SQL调用,并且您可以使用 CallableStatement 对象从 JDBC 应用程序中调用它,CallableStatement 对象充当了服务器上存储过程的调用方。大多数业务逻辑将位于存储过程上。这有助于简化客户端代码并会加快执行速度,因为在创建存储过程时就已经准备好了存储过程中包含的 SQL 语句,并对这些语句进行了优化。

在 JDBC 应用程序中调用存储过程

Informix JDBC 驱动程序提供了可用于执行存储过程的 Statement、PreparedStatement 和 CallableStatement 方法。使用哪种方法取决于存储过程的特性。例如,如果存储过程返回一个值,那么应该使用 JDBC Statement 对象。下表提供了哪个存储过程类型使用哪个方法的一些指南。

表 1. 显示基于各个存储过程类型要使用哪个 JDBC 方法的表

存储过程类型 JDBC 方法
存储过程不需要 IN 或 OUT 参数 使用 Statement 对象
存储过程具有 IN 参数 使用 PreparedStatement 对象
存储过程具有 IN 和 OUT 参数 使用 CallableStatement 对象

我们将提供一个在以下情况下使用 Informix JDBC 方法执行存储过程的示例:

  • 使用没有参数的 Statement
  • 使用具有输入参数的 PreparedStatement
  • 使用具有输出参数的 CallableStatement
  • CallableStatement 中的已命名参数
  • 过载的存储过程

上面提到的每个主题将包含以下细节:

  • 在 Informix JDBC 驱动程序过程中调用存储过程所使用的语法
  • 数据库上的存储过程的架构
  • 具有输出的 JDBC 驱动程序示例程序

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn