我正在从 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 个参数是输出。但我收到一个错误,以下是错误:
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Procedure or function 'SAMPLE_ENTRIES' expects parameter '@RESULT_OUTPUT', which was not supplied.
at 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)
我是存储过程的新手。
感谢您提前提供的帮助。
最佳答案
OUTPUT
参数仍然是输入参数;存储过程不存在“非输入”参数。您仍然需要将变量传递给参数,因为一旦 SP 完成,OUTPUT
参数的值将被分配给该变量。
如果您使用 T-SQL 执行 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; --1
关于java - SQL Server 中的存储过程需要输出参数作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305171/