当前位置: 技术问答>java相关
请问JDBC中返回结果参数的存储过程{?=call 过程名(?,?,...)}返回的结果如何得到?
来源: 互联网 发布时间:2015-05-14
本文导语: 还有一个问题就是下面这个存储过程有是么不对 CREATE PROCEDURE GetFileName @TableName varchar(20), @FileName varchar(20) OUTPUT AS SELECT @FileName = FileName FROM @TableName WHERE Number = ... RETURN GO 说是FROM @TableName一行有错,没有定...
还有一个问题就是下面这个存储过程有是么不对
CREATE PROCEDURE GetFileName
@TableName varchar(20),
@FileName varchar(20) OUTPUT
AS
SELECT @FileName = FileName
FROM @TableName
WHERE Number = ...
RETURN
GO
说是FROM @TableName一行有错,没有定义@TableName?好奇怪!
CREATE PROCEDURE GetFileName
@TableName varchar(20),
@FileName varchar(20) OUTPUT
AS
SELECT @FileName = FileName
FROM @TableName
WHERE Number = ...
RETURN
GO
说是FROM @TableName一行有错,没有定义@TableName?好奇怪!
|
要组合动态的SQL需要用exec('your SQL Statement'),所以你的解决方法应该为:
exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
|
FROM @TableName
from后面的表明应该不可以使用变量吧!
from后面的表明应该不可以使用变量吧!
|
不知道SQL Server是怎么弄的,不过一般都是在存储过程执行之前要先注册输出函数,执行之后在用相应的getXXX()取回结果。参见:
call=conn.prepareCall("{ call addperson (?,?,?) }");
call.registerOutParameter(3,java.sql.Types.INTEGER);
call.setString(1, "小路");
call.setString(2, "女");
call.execute();
int id=call.getInt(3);
call=conn.prepareCall("{ call addperson (?,?,?) }");
call.registerOutParameter(3,java.sql.Types.INTEGER);
call.setString(1, "小路");
call.setString(2, "女");
call.execute();
int id=call.getInt(3);