2024年4月11日发(作者:)
JSP 调用存储过程
在需要执行存储过程时,可以使用T-SQL语句CALL。如果存储过程是批处理
中的第一条语句,那么不使用CALL关键字也可以执行该存储过程,CALL语法格
式如下:
[ { CALL } ]
{ procedure_name [;number] | procedure_name_var }
parameter = [ { value | @variable [ OUTPUT ] | [ DEFAULT ] } ]
[,…n]
[ WITH RECOMPILE ]
其中主要参数的含义如下:
Procedure_name 要调用的存储过程名称。
;number 是可选的整数,用于将相同名称的过程进行组合,使得它们可以用一句DRO
P PROCEDURE 语句删除。在【testdb】中使用的过程可以Reader_proc;1、proc_GetCo
untsBook等来命名。DROP PROCEDURE book_proc语句将除去整个组。在对过程分组
后,不能删除组中的单个过程。例如,DROP PROCEDURE proc_GetCountsBook;这是不
允许的。
procedure_name_var 是局部定义变量名,代表存储过程名称。
parameter 是过程参数,在CREATE PROCEDURE语句中定义。
Value 是过程中参数的值。如果参数名称没有指定,参数值必须以CREATE PROCEDUR
E语句中定义的顺序给出。
如果参数值是一个对象名称、字符串或通过数据库名称或所有者名称进行限制,则
整个名称必须用单引号括起来。如果参数值是一个关键字,则该关键字必须用双引
号括起来。
OUTPUT 指定存储过程必须返回一个参数。该存储过程的匹配参数也必须由关键字O
UTPUT创建。使用游标变量作参数时使用该关键字。
DEFAULT 根据过程的定义,提供参数的默认值。当过程需要的参数值是没有事先定义
好的默认值,或缺少参数,或指定了DEFAULT关键字,就会出错。
例如,在MySQL中的示例数据库【testdb】中调用一个带字符类型参数的
book_proc存储过程,它将显示从表中返回查询指定图书的编号、图书名称、库存
量、价格等信息,代码如下:
call book_proc('计算机基础');
在MySQL中执行该存储过程如图10-15所示。
图10-15 调用程序
下面是一个在JSP调用存储过程的实例,代码如下所示。
文件名:
<%@ page language="java" import=".*" pageEncoding="UTF-8"%>
<%@ page import=".*"%>
<%
try {
// 加载驱动
e("").newInstance();
String url = "jdbc:mysql://localhost:3306/testdb";
String user = "root";
String password = "123";
Connection conn = nection(url, user,password);
CallableStatement st = eCall("{call book_proc('计算机基础')}");
//执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
ResultSet rs = eQuery();
n("
图书信息
| 图书编号 while (()) {
} (" |
");
();
("
+ ing(2) + "
+ "
//创建用于将调用存储过程的 SQL 语句发送到数据库的 SQLServerStatement 对象。
} catch (Exception e) {
%>
}
("无数据");
tackTrace();
在上述代码中,主要通过conn数据库连接的prepareCall()方法,实现存储过程
的调用。执行上述代码,结果如图10-16所示。
图10-16 JSP中调用存储过程


发布评论