11

我正在使用 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
4

1 回答 1

25

尝试这个

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

第一个存储过程:

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

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

于 2013-04-25T11:06:30.790 回答