首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中将输出参数作为输入的存储过程

问SQL Server中将输出参数作为输入的存储过程
EN

Stack Overflow用户
提问于 2019-12-12 12:58:52
回答 1查看 323关注 0票数 0

我从我的Java代码中调用一个存储过程。在存储过程中进行了一些计算之后,我将返回状态。

这是存储过程:

代码语言:javascript
复制
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)

我对存储过程很陌生。

谢谢你提前帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-12 13:12:07

OUTPUT参数仍然是输入参数;存储过程中不存在“非输入”参数。您仍然需要将一个变量传递给参数,因为OUTPUT参数的值将在SP完成后分配给该变量。

如果使用T执行SP,则如下所示:

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59305171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档