如何在SQL Server存储过程/函数中声明输入输出参数?
在甲骨文中 我们可以声明输入-输出参数(不仅仅是输入或输出),如下所示:如何在SQL Server存储过程/函数中声明输入输出参数?,sql,sql-server,oracle,function,stored-procedures,Sql,Sql Server,Oracle,Function,Stored Procedures,在甲骨文中 我们可以声明输入-输出参数(不仅仅是输入或输出),如下所示: Create Or Replace Procedure USERTEST.SimpleInOutProcedure( p_InputInt Int, p_OutputInt out Int, p_InputOutputInt in out Int ) AS BEGIN p_OutputInt := p_InputInt + 1; p_InputOutputInt := p_Input
Create Or Replace Procedure USERTEST.SimpleInOutProcedure(
p_InputInt Int,
p_OutputInt out Int,
p_InputOutputInt in out Int
) AS
BEGIN
p_OutputInt := p_InputInt + 1;
p_InputOutputInt := p_InputOutputInt + p_InputOutputInt;
END;
但是,当我试图在SQL Server中声明此类脚本时,脚本将无法编译:
create procedure SimpleInOutProcedure
@p_InputInt int, @p_OutputInt int input output
As
Begin
Select * from TestTableCommonA;
End
“输入”一词不应出现,因此在SQL Server Management Studio中不是蓝色的:
我的脚本有什么问题,如何在SQL Server存储过程/函数中声明输入输出参数
之所以要这样做,是因为我需要为SQL Server DB创建“等效”读卡器,该读卡器以前是为Oracle DB创建的,并且具有用于输入/输出参数的读卡器。如果将一个参数声明为输出,它将同时充当输入和输出
CREATE PROCEDURE SimpleInOutProcedure
(
@p_InputInt INT,
@p_OutputInt INT OUTPUT
)
AS
BEGIN
SELECT
@p_OutputInt = @p_OutputInt
END
GO
DECLARE @p_OutputInt int = 4
EXEC SimpleInOutProcedure @p_InputInt = 1, @p_OutputInt = @p_OutputInt OUTPUT
SELECT @p_OutputInt
这是SQL输入和输出参数的示例代码
CREATE PROCEDURE [dbo].[sample_Insert]
@name varchar(500),
@entryby int,
@RetVal INT = 0 OUT
AS
SET NOCOUNT ON
INSERT INTO dbo.Master
( name ,
entry_date ,
entry_by
)
VALUES ( @name , -- service_name - varchar(1000)
dbo.GetActDate() , -- entry_date - datetime
@entryby -- entry_by - int
)
IF @@ERROR = 0
BEGIN
SET @RetVal = 1 -- 1 IS FOR SUCCESSFULLY EXECUTED
End
ELSE
BEGIN
SET @RetVal = 0 -- 0 WHEN AN ERROR HAS OCCURED
End
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
这也是我所怀疑的。。。但是,有没有关于这方面的明确文件?因为我找不到关于这一点的明确文档,因为我不想错过任何等价物,只要有可能,尤其是在输入输出行为部分。(我不知道它将同时作为输入和输出,我认为它将是输入或输出)。我没有任何文档。但这看起来并不需要详细的文档好吧,让我测试一下你的脚本,它看起来像@p_OutputInt同时充当输入和输出。谢谢谢谢你的例子!不过,这不会有多大帮助,因为我想知道的是,SQL Server中是否有等价的输入输出