gpt4 book ai didi

sql-server-2008 - 如何在sql server中的另一个存储过程中执行存储过程

转载 作者:行者123 更新时间:2023-12-04 04:57:24 32 4
gpt4 key购买 nike

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

最佳答案

尝试这个

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

第一个存储过程:

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

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

关于sql-server-2008 - 如何在sql server中的另一个存储过程中执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16211107/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com