2013-11-27 217 views
1

我正在使用以下JDBC驱动程序(来自Microsoft的一个):http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx如何在SQLServer中获取存储过程sp_setapprole的OUTPUT参数

我想检索存储过程sp_setapprole的OUTPUT参数(@cookie)。我可以像这样调用过程,但我无法弄清楚如何检索OUTPUT参数。

statement = connection.createStatement(); 
statement.execute("EXEC sp_setapprole '" + applicationRoleName + "', '" + applicationRolePassword + "'"); 

我试图用一个PreparedStatement和一个CallableStatement,我总是得到以下异常:Stored procedure 'sys.sp_setapprole' can only be executed at the ad hoc level.。我发现这篇文章:https://stackoverflow.com/a/6944693/1362049,但我不喜欢解决方案(使用另一个JDBC驱动程序)。

所以我的问题:如何使用Statement从SQLServer中的存储过程sp_setapprole获取OUTPUT参数。

回答

-1

我认为这会有所帮助。我不是一个大的Java程序,但是和ODBC一起生活了好几年。

http://www.tutorialspoint.com/jdbc/jdbc-statements.htm

看的调用语句。您需要定义输入/输出或输入参数。执行SP并读取输出。

在C#中,它只是看着如下参数给你的价值。但是建立连接,绑定参数,调用和读取输出的想法是相同的。

my_Cmd.Parameters [“@ PageCount”]。Value.ToString();

这是来自MSDN的C++文章。

http://technet.microsoft.com/en-us/library/ms403283.aspx

同样的想法,绑定参数,拨打电话,使用[SQLExecDirect的]读取输出

给我一叫喊,如果你不明白这一点。

+0

我不能使用CallableStatement(或PreparedStatement),因为我得到的错误'存储过程'sys.sp_setapprole'只能在ad hoc级别执行。“。看到我的第一篇文章。 –

相关问题