我有一個存儲過程,我試圖測試。我試圖通過SQL Management Studio來測試它。爲了運行這個測試,我進入...使用Output參數執行存儲過程?
exec my_stored_procedure 'param1Value', 'param2Value'
最後一個參數是一個output parameter
。但是,我不知道如何用輸出參數測試存儲過程。
如何使用輸出參數運行存儲過程?
我有一個存儲過程,我試圖測試。我試圖通過SQL Management Studio來測試它。爲了運行這個測試,我進入...使用Output參數執行存儲過程?
exec my_stored_procedure 'param1Value', 'param2Value'
最後一個參數是一個output parameter
。但是,我不知道如何用輸出參數測試存儲過程。
如何使用輸出參數運行存儲過程?
最簡單的辦法是right-click
在procedure
在SQL Server管理套件(SSMS),
選擇execute stored procedure...
和提示輸入輸入添加參數值。
SSMS
將生成代碼以在新的查詢窗口中運行proc併爲您執行。你可以研究生成的代碼,看看它是如何完成的。從程序
declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output
從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,
@[email protected],
@[email protected] OUTPUT,@[email protected] OUTPUT
SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
GO
DROP PROCEDURE Myproc
希望這有助於!
返回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
檢查這一點,如果前兩個參數是輸入參數和第三一個是過程定義輸出參數:
這個怎麼樣?這是非常簡單:
存儲過程的下面有@ParentProductID
輸出參數,我們要選擇的@ParentProductID
輸出到@MyParentProductID
的值如下聲明。
下面的代碼:
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'[email protected],'password'[email protected]
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].[text] 'Abhishek',@ID OUTPUT
PRINT @ID
小評論:你稱之爲SP:[dbo]。[測試],但是當你稱之爲[dbo]。[文本]時,這恰好是一個錯字。請修復 – leeroya 2017-06-16 16:42:10
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE [email protected]
END
DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2
首先,聲明輸出變量:
DECLARE @MyOutputParameter INT;
然後,執行存儲過程,你可以做到這一點不帶參數的名字,就像這樣:
EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT
或參數的名字:
EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT
最後,您可以通過查看輸出結果的SELECT
:
SELECT @MyOutputParameter
我知道要執行存儲過程(如EXEC,從C#或PHP調用)所有其他可能的方法,但這是最簡單的和非技術人員可以做到這一點。所以+1和thx共享信息。 – Dhaval 2013-09-03 11:13:02
我沒有'execute'命令,上下文菜單隻有一個'modify'。 – Akbari 2015-06-08 05:25:12
這似乎很奇怪。我在存儲過程中的上下文菜單有大約12個項目,包括修改,執行,屬性和其他項。 – Ray 2015-06-08 14:56:41