Dans Oracle,
Nous pouvons déclarer un paramètre d'entrée-sortie (pas seulement une entrée ou sortie) comme suit:
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;
Cependant, lorsque j'essaie de le déclarer dans SQL Server, le script ne compilerait pas:
create procedure SimpleInOutProcedure
@p_InputInt int, @p_OutputInt int input output
As
Begin
Select * from TestTableCommonA;
End
Le mot "entrée" n'est pas attendu, donc pas de couleur bleue dans SQL Server Management Studio:
Qu'est-ce qui ne va pas dans mon script? Comment déclarer les paramètres d'entrée-sortie dans SQL Server Stored Procedure/Function?
Je souhaite le faire car je dois créer un lecteur "équivalent" pour la base de données SQL Server, créé précédemment pour la base de données Oracle et disposant du lecteur pour les paramètres d'entrée/sortie.
Si vous déclarez un paramètre en tant que OUTPUT, il agit à la fois en entrée et en sortie.
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
Ceci est un exemple de code pour le paramètre 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