use*_*192 185 sql-server stored-procedures
我有一个我试图测试的存储过程.我试图通过SQL Management Studio测试它.为了运行这个测试,我输入...
exec my_stored_procedure 'param1Value', 'param2Value'
Run Code Online (Sandbox Code Playgroud)
最后一个参数是output parameter.但是,我不知道如何使用输出参数测试存储过程.
如何使用输出参数运行存储过程?
Ray*_*Ray 218
最简单的方法是right-click在procedure在SQL Server管理Studio(SSMS)
选择 execute stored procedure...
并根据提示添加输入参数的值.
SSMS然后将生成代码以在新的查询窗口中运行proc,并为您执行它.您可以研究生成的代码以了解它是如何完成的.
فره*_*اری 161
你可以这样做 :
declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output
Run Code Online (Sandbox Code Playgroud)
小智 86
从程序中返回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
Run Code Online (Sandbox Code Playgroud)
小智 41
检查一下,前两个参数是输入参数,第三个参数是过程定义中的输出参数.
DECLARE @PK_Code INT;
EXEC USP_Validate_Login 'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code
Run Code Online (Sandbox Code Playgroud)
ajd*_*ams 29
来自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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
小智 23
Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output
As
Begin
SELECT @ID = UserID from tbl_UserMaster where Name = @Name
Return;
END
Run Code Online (Sandbox Code Playgroud)
Declare @ID int
EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT
PRINT @ID
Run Code Online (Sandbox Code Playgroud)
Jai*_*der 17
首先,声明输出变量:
DECLARE @MyOutputParameter INT;
Run Code Online (Sandbox Code Playgroud)
然后,执行存储过程,您可以在没有参数名称的情况下执行此操作,如下所示:
EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT
Run Code Online (Sandbox Code Playgroud)
或者使用参数的名称:
EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT
Run Code Online (Sandbox Code Playgroud)
最后,您可以通过执行以下操作来查看输出结果SELECT:
SELECT @MyOutputParameter
Run Code Online (Sandbox Code Playgroud)
小智 9
这个怎么样?它非常简化:
下面的SPROC的输出参数为 @ParentProductID
我们要选择的输出值@ParentProductID到@MyParentProductID这是下面声明.
这是代码:
declare @MyParentProductID int
exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID output
select @MyParentProductID
Run Code Online (Sandbox Code Playgroud)小智 7
>尝试将其工作正常用于多输出参数:
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
Run Code Online (Sandbox Code Playgroud)
使用此查询,您可以执行任何存储过程(带或不带输出参数):
DECLARE @temp varchar(100)
EXEC my_sp
@parameter1 = 1,
@parameter2 = 2,
@parameter3 = @temp output,
@parameter4 = 3,
@parameter5 = 4
PRINT @temp
Run Code Online (Sandbox Code Playgroud)
这里@temp 的数据类型应该与SP 中的@parameter3 相同。
希望这可以帮助..
| 归档时间: |
|
| 查看次数: |
686454 次 |
| 最近记录: |