如何在sql server的另一个存储过程中执行存储过程
Posted
技术标签:
【中文标题】如何在sql server的另一个存储过程中执行存储过程【英文标题】:How to execute stored procedure in another stored procedure in sql server 【发布时间】:2013-04-25 09:27:04 【问题描述】:我正在使用 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
【问题讨论】:
将您正在执行的 Sp 的输出存储在一个变量中。我认为这可以解决问题。 请显示“usp_Insert_Update_Details”的代码 Executing a stored procedure within a stored procedure 的可能重复项 【参考方案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
现在你想从另一个存储过程中调用这个过程,如下所示
第二个存储过程
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
正如您在上面看到的,我们可以从另一个存储过程调用一个存储过程
【讨论】:
如果exec @EmpLoginid= LoginId @UserName,@Password
有out参数怎么办?以上是关于如何在sql server的另一个存储过程中执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sql Server 的另一个过程中使用一个过程的结果?
如何在 SQL Developer 中执行 SQL Server 存储过程?
如何在SQL Developer中执行SQL Server存储过程?