存储过程java返回值_如何从Java中的T-SQL存储过程获取返回值?

我有一个存储过程,它将对象添加到数据库并返回生成的ID号。

作为参考,其基本结构如下:

ALTER PROCEDURE [dbo].[myProc]

@Name nvarchar(50),

@Creator nvarchar(50),

@Text nvarchar(200),

@Lat float,

@Lon float,

@myID int OUTPUT

AS

BEGIN

SET NOCOUNT ON;

INSERT INTO myTable --# blah blah blah

SELECT @myID = scope_identity(); --# grab the auto-inc key from myTable

INSERT INTO anotherTable --# blah blah blah

END

我在sqlservermanagementstudio中运行了这个程序,并验证它是否正常工作。

CallableStatement cs = con.prepareCall("EXEC myProc "

+ "@Name = ?, @Creator = ?, @Text = ?, @Lat = ?, @Lon = ?, @myID = ? OUTPUT");

cs.setString(1, aString);

cs.setString(2, anotherString);

cs.setString(3, yetAnotherString);

cs.setFloat(4, aFloat);

cs.setFloat(5, anotherFloat);

cs.registerOutParameter(6, java.sql.Types.INTEGER);

cs.execute();

但是

execute()

调用引发异常:

java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Error converting data type nvarchar to int.

getInt()

然而(下一行)。

我试过的:

将输出参数的类型更改为

Types.NVARCHAR

,以防万一。但我使用的JdbcOdbcDriver甚至不支持这一点。

搜索谷歌。很多。最后出现了一堆毫无用处的论坛帖子和“答案”。

现在我被难住了。是真的这么难还是我只是错过了显而易见的?

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

不独行但是特立

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值