gpt4 book ai didi

java - SQL Server 中的存储过程需要输出参数作为输入

转载 作者:行者123 更新时间:2023-12-01 19:32:12 25 4
gpt4 key购买 nike

我正在从 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

DB<>Fiddle

关于java - SQL Server 中的存储过程需要输出参数作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com