【发布时间】:2017-03-21 12:10:09
【问题描述】:
我有一个名为clients 的存储过程,它有3 个参数:第一个用于用户输入,最后两个是OUTPUT 参数。
这是代码:
CREATE PROCEDURE clients
(@name NVARCHAR(100),
@id_client int OUTPUT,
@messg varchar(1) OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRAN
IF NOT EXISTS (SELECT name FROM client WHERE name = @name)
BEGIN
INSERT INTO client(name) VALUES (@name);
SET @id_client = SCOPE_IDENTITY();
SET @messg = 'o'
COMMIT TRAN
END
ELSE
BEGIN
SELECT @id_client = id_client
FROM client
WHERE name = @name;
SET @messg = 'o'
COMMIT TRAN
END
END TRY
BEGIN CATCH
SET @messg = 'e'
ROLLBACK TRAN
END CATCH
END
我需要从另一个调用这个存储过程,第二个被称为updateS,我正在尝试以下操作:
CREATE PROCEDURE updateS
(@clientname VARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id INT;
DECLARE @msg VARCHAR(1);
EXEC clients @clientname, @id, @msg; --Problem here to retrieve the id
END
此存储过程有一个客户端名称的参数,但我需要检索客户端的 id,但它不起作用,因为我正在尝试。
基本上我需要获取 id 并在第二个存储过程中使用它。
关于 cmets 的任何问题。
【问题讨论】:
标签: sql sql-server stored-procedures