11

I am working on sql server 2008.

And i have a stored procedure in which i am executing one more usp.

Here i want to get the output of second usp and return the main usp output parameter accordingly.

But my main usp always returning the second usp value with the main usp value.

But i want to return only main usp value.

Below is my procedure :

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

これを試して

このようなストアド プロシージャが 1 つあるとします。

最初のストアド プロシージャ:

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

次に、以下のような別のストアド プロシージャからこのプロシージャを呼び出します。

2 番目のストアド プロシージャ

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 に答える