2013-04-25 32 views
4

執行存儲過程,我的工作的SQL Server 2008如何在另一個存儲過程在SQL Server

上,我有一個存儲過程中,我正在執行一個更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 
+0

存儲SP的你在變量正在執行的輸出調用一個存儲過程。我認爲那會有訣竅。 – Luv 2013-04-25 09:32:33

+0

請顯示「usp_Insert_Update_Details」的代碼 – 2013-04-25 09:37:32

+0

[在存儲過程中執行存儲過程]可能的重複(http://stackoverflow.com/questions/170328/executing-a-stored-procedure-within-a-stored-procedure ) – 2014-09-25 10:05:53

回答

15

試試這個

假設你有一個存儲過程,這樣

第一個存儲過程:

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 

現在,你想調用這個程序fr嗡等作爲下面

第二存儲過程另一個存儲過程

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 

如你上面看到的,我們可以從另一個

相關問題