我有一些访问SQL Server 2005的Java代码,如下所示:
CallableStatement cstmt = ...;
... // Set input parameters
cstmt.registerOutParameter(11, Types.INTEGER);
cstmt.execute();
int out = cstmt.getInt(11);
Run Code Online (Sandbox Code Playgroud)
从最后一行抛出以下异常:
com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set
for the parameter number 0.
at com.microsoft.sqlserver.jdbc.SQLServerException.
makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.
skipOutParameters(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.
getOutParameter(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.
getterGetParam(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.
getInt(Unknown Source)
at org.jboss.resource.adapter.jdbc.WrappedCallableStatement.
getInt(WrappedCallableStatement.java:192)
Run Code Online (Sandbox Code Playgroud)
被调用的存储过程看起来像这样:
CREATE PROCEDURE dbo.stored_proc ( -- 10 input parameters
, @out_param INT OUTPUT) AS
-- Variable declarations
SET @out_param = 0
-- Do processing...
SET @out_param …Run Code Online (Sandbox Code Playgroud) 我的大多数SP都可以通过手动输入数据来执行(和测试).这很好用,使用简单的PRINT语句允许我"调试".
然而,存在涉及多于一个存储过程并且找到有效数据以进行输入的情况是繁琐的.从我的网络应用程序中触发事物更容易.
我对分析器有一点经验,但我还没有找到一种方法来探索我的存储过程中逐行进行的操作.
你有什么方法?
谢谢你,一如既往.
注意:我假设使用SQL Server 2005+