如何在sql server中执行另一个存储过程中的存储过程

2024-01-21

我正在 sql server 2008 上工作。

我有一个存储过程,在其中我正在执行另一个 usp。

这里我想获取第二个usp的输出并相应地返回主usp输出参数。

但我的主要 USP 总是返回第二个 USP 值和主要 USP 值。

但我只想返回主要的 USP 值。

以下是我的程序:

ALTER Proc [dbo].[usp_ChangeStatus](@id int,@Status int,@Name varchar(300),@Success int output  )
as
set @Success=0
begin try   

if exists(Select * from tbl_abc where id= @id)
Begin               

    if(@Status =1)
    begin
        ----Try-Catch block----
        begin try               
            declare @AddHostStatus as int
            set @AddHostStatus=0                
                            exec @AddHostStatus =usp_xyz @Name,0,@Address       
            if(@AddHostStatus=-3)               
            begin
            set @Success=1
            end             
        end try
        begin catch
            set @Success=0
        end catch
        ----End-Try-Catch block----     
    end     
    if(@Success=1)
    begin               
    --do something here         
    end                 
 End 
        end try 
        begin catch 
    set @Success=0  
     end catch
        select  @Success

Try this

假设您有一个这样的存储过程

第一个存储过程:

Create  PROCEDURE LoginId
     @UserName nvarchar(200),
     @Password nvarchar(200)
AS
BEGIN
    DECLARE  @loginID  int

    SELECT @loginID = LoginId 
    FROM UserLogin 
    WHERE UserName = @UserName AND Password = @Password

    return @loginID
END

现在您想从另一个存储过程调用此过程,如下所示

第二个存储过程

Create  PROCEDURE Emprecord
         @UserName nvarchar(200),
         @Password nvarchar(200),
         @Email nvarchar(200),
         @IsAdmin bit,
         @EmpName nvarchar(200),
         @EmpLastName nvarchar(200),
         @EmpAddress nvarchar(200),
         @EmpContactNo nvarchar(150),
         @EmpCompanyName nvarchar(200)

    AS
    BEGIN
        INSERT INTO UserLogin VALUES(@UserName,@Password,@Email,@IsAdmin)

        DECLARE @EmpLoginid int

        exec @EmpLoginid= LoginId @UserName,@Password

        INSERT INTO tblEmployee VALUES(@EmpName,@EmpLastName,@EmpAddress,@EmpContactNo,@EmpCompanyName,@EmpLoginid)
    END

正如您在上面看到的,我们可以从一个存储过程调用另一个存储过程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在sql server中执行另一个存储过程中的存储过程 的相关文章

随机推荐