我有一个存储过程,它接受 1 个输入值、2 个输出参数并在执行时返回一个值
在互联网上,我看到了使用 Call 的参考资料
CallableStatement cstmt = conn.prepareCall("{call ? = spName(?, ?, ?)}");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.setObject(2, Types.INTEGER);
cstmt.registerOutParameter(3, Types.NVARCHAR);
cstmt.registerOutParameter(4, Types.NVARCHAR);
但这给了我错误
"Incorrect syntax near '{'"
然后我决定像 SQL Management Studio 生成的 SQL 代码一样:
CallableStatement cstmt = conn.prepareCall("exec ? = spName ?, ?, ?");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.setObject(2, Types.INTEGER);
cstmt.registerOutParameter(3, Types.NVARCHAR);
cstmt.registerOutParameter(4, Types.NVARCHAR);
但这给了我错误
"Incorrect syntax near '='"
我认为这是因为查询被转换为
"exec @P1 OUT = spName @P2, @P3 OUT, @P4 OUT"
它在 SQL Management Studio 上也不起作用,因为 'OUT' 出现在 '=' 之前
这让我没有想法,因为这两种方式都行不通。
有什么建议么?
谢谢!