存储过程

//存储过程定义
CREATE PROCEDURE USER_REG (
         IN _account                                 varchar(10)                         ,                
         IN _password                              vachar(50)                           ,
         INOUT _status_                          int                                          ,
         OUT id_                                         varchar(50)                         ,       
         OUT msg_                                    varchar(50)     
)
 
 
Procedure proc = new ProcedureImpl("过程名称");
//输入参数
proc.addInput("root"); //输入参数值
proc.addInput("000000");
 
 
//注册输出参数,根据输出参数个数调用
proc.regOutput("1"); //如果参数既是输入又是输出,需要调用regOutput同时指定默认值
proc.regOutput();
proc.regOutput();
 
//有返回值的存储过程,在执行之前调用一次
proc.regReturn();

 
//执行存储过程 这里只接收存储过程是否执行成功,并不接收执行存储过程返回结果,执行结果需要接收输出参数结果
 boolean rtn = service.executeProcedure(proc);
 
//接收输出参数与返回值,result中先保存返回值,再依次保存输出参数
List<Object> list = proc.getResult();
 
 
//查询存储过程
DataSet set = service.queryProcedure(proc);
//也可以同时指定输入参数值
DataSet set = service.queryProcedure(proc, "1","2");



如果通过query接收存储过程的结果集,需在在过程中返回结果集而不是返回一个值
以SQL Server为例

应该是这样:
ALTER PROCEDURE [dbo].[PRO_TEST]
@a int
AS
BEGIN
	SELECT * FROM ABM120T
END


而不是这样:
这样返回的应该通过execute(Procedure proc)执行,然后通过proc.getResult()获取返回值
ALTER PROCEDURE [dbo].[PRO_TEST]
@a int
AS
BEGIN
	RETURN 0;
END



其他文档