我正在使用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
答案 0 :(得分:19)
试试这个
假设您有一个这样的存储过程
第一个存储过程:
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
如上所示,我们可以从另一个
调用一个存储过程