wake-up-neo.net

Wie deklarieren Sie Eingabe-Ausgabe-Parameter in SQL Server gespeicherter Prozedur/Funktion?

In Oracle 

Wir können Eingabe-Ausgabe-Parameter (nicht nur Eingabe oder -Ausgabe) wie folgt deklarieren:

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;

Wenn ich versuche, dies in SQL Server zu deklarieren, würde das Skript jedoch nicht kompilieren:

create procedure SimpleInOutProcedure 
    @p_InputInt int, @p_OutputInt int input output
As
Begin
    Select * from TestTableCommonA;
End

Das Wort "input" wird nicht erwartet, daher nicht blau in SQL Server Management Studio:

 enter image description here

Was ist falsch an meinem Skript, wie man Eingabe-Ausgabeparameter in SQL Server Stored Procedure/Function deklariert?

Ich möchte dies tun, weil ich einen "äquivalenten" Reader für SQL Server DB erstellen muss, der zuvor für Oracle DB erstellt wurde und den Reader für In/Out-Parameter besitzt.

4
Ian

Wenn Sie einen Parameter als OUTPUT deklarieren, fungiert er als Eingang und Ausgang

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
10

Dies ist ein Beispielcode für den Parameter SQL Input & Output.

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
0
ravi polara