我从我的Java代码中调用一个存储过程。在存储过程中进行了一些计算之后,我将返回状态。
这是存储过程:
ALTER PROCEDURE [dbo].[SAMPLE_ENTRIES]
(@ID INTEGER,
@PERIOD_ID INTEGER,
@RUN_ID INTEGER,
@TYPE CHAR,
@RESULT_OUTPUT varchar(100) OUTPUT)
/**Here goes some computation**/
IF @RESULT_OUTPUT IS NULL
BEGIN
set @RESULT_OUTPUT = 'SUCCESS';
select @RESULT_OUTPUT as RESULT_OUTPUT;
END;
END正如您在这里看到的,我将4个参数传递给存储过程,第5个参数是输出。但是我收到了一个错误,下面是错误:
由: com.microsoft.sqlserver.jdbc.SQLServerException:过程或函数'SAMPLE_ENTRIES‘引起的
期望参数'@RESULT_OUTPUT',这个参数没有提供。
在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515) at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
我对存储过程很陌生。
谢谢你提前帮忙。
发布于 2019-12-12 13:12:07
OUTPUT参数仍然是输入参数;存储过程中不存在“非输入”参数。您仍然需要将一个变量传递给参数,因为OUTPUT参数的值将在SP完成后分配给该变量。
如果使用T执行SP,则如下所示:
CREATE PROC dbo.MyProc @MyParam int OUTPUT AS
BEGIN
SET @MyParam = 1;
END;
GO
DECLARE @MyParam int;
EXEC dbo.MyProc @MyParam OUTPUT;
PRINT @MyParam; --1https://stackoverflow.com/questions/59305171
复制相似问题