回答:
簡単な方法はにあるright-click
上procedure
でSQL Serverの管理Studio(SSMS)、
選択する execute stored procedure...
プロンプトに従って、入力パラメーターの値を追加します。
SSMS
次に、新しいクエリウィンドウでプロシージャを実行するコードを生成し、実行します。生成されたコードを調べて、それがどのように行われるかを確認できます。
execute
コマンドはありませんmodify
。コンテキストメニューにはだけがあります。
プロシージャからvalを返す
ALTER PROCEDURE testme @input VARCHAR(10),
@output VARCHAR(20) output
AS
BEGIN
IF @input >= '1'
BEGIN
SET @output = 'i am back';
RETURN;
END
END
DECLARE @get VARCHAR(20);
EXEC testme
'1',
@get output
SELECT @get
これをチェックしてください。最初の2つのパラメーターは入力パラメーターで、3番目のパラメーターはプロシージャー定義の出力パラメーターです。
DECLARE @PK_Code INT;
EXEC USP_Validate_Login 'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code
http://support.microsoft.com/kb/262499から
例:
CREATE PROCEDURE Myproc
@parm varchar(10),
**@parm1OUT varchar(30) OUTPUT**,
**@parm2OUT varchar(30) OUTPUT**
AS
SELECT @parm1OUT='parm 1' + @parm
SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
@parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
@parm1OUT varchar(30) OUTPUT,
@parm2OUT varchar(30) OUTPUT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@parm=@parmIN,
@parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT
SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
GO
DROP PROCEDURE Myproc
お役に立てれば!
Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output
As
Begin
SELECT @ID = UserID from tbl_UserMaster where Name = @Name
Return;
END
Declare @ID int
EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT
PRINT @ID
まず、出力変数を宣言します。
DECLARE @MyOutputParameter INT;
次に、ストアドプロシージャを実行します。次のように、パラメーターの名前なしで実行できます。
EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT
またはパラメータの名前:
EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT
そして最後に、次のようにして出力結果を確認できますSELECT
。
SELECT @MyOutputParameter
これはどう?それは非常に単純化されています:
以下のSPROCの出力パラメーターは @ParentProductID
以下で宣言@ParentProductID
され@MyParentProductID
ているinto の出力の値を選択します。
これがコードです:
declare @MyParentProductID int
exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID output
select @MyParentProductID
>これを複数の出力パラメーターに対してうまく機能するようにしてください:
CREATE PROCEDURE [endicia].[credentialLookup]
@accountNumber varchar(20),
@login varchar(20) output,
@password varchar(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT top 1 @login = [carrierLogin],@password = [carrierPassword]
FROM [carrier_account] where carrierLogin = @accountNumber
order by clientId, id
END
Try for the result:
SELECT *FROM [carrier_account]
DECLARE @login varchar(20),@password varchar(50)
exec [endicia].[credentialLookup] '588251',@login OUTPUT,@password OUTPUT
SELECT 'login'=@login,'password'=@password
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE
END
DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2
このクエリを使用すると、任意のストアドプロシージャを実行できます(出力パラメーターの有無にかかわらず)。
DECLARE @temp varchar(100)
EXEC my_sp
@parameter1 = 1,
@parameter2 = 2,
@parameter3 = @temp output,
@parameter4 = 3,
@parameter5 = 4
PRINT @temp
ここで、@ tempのデータ型は、SP内の@ parameter3と同じである必要があります。
お役に立てれば..
ストアドプロシージャを実行して出力変数値を取得するには、以下の例を確認してください。
DECLARE @return_value int,
@Ouput1 int,
@Ouput2 int,
@Ouput3 int
EXEC @return_value = 'Your Sp Name'
@Param1 = value1,
@Ouput1 = @Ouput1 OUTPUT,
@Ouput2 = @Ouput2 OUTPUT,
@Ouput3 = @Ouput3 OUTPUT
SELECT @Ouput1 as N'@Ouput1',
@Ouput2 as N'@Ouput2',
@Ouput3 as N'@Ouput3'