如何 return 存储过程中输出参数中的值数组
How to return an array of values in output parameter in Stored Proc
我有一种情况需要通过存储过程发送状态为 Inactive 的 ID。此外,在同一个 SP 中,发送非活动 ID 后,我需要将其更新为活动 ID。所以我在交易中这样做。但是不知道如何发送 ID 集以及我的更新是否正确。我想我需要循环更新?请帮我构造一下。
Create Proc Name
@ID VARCHAR INT OUT
AS
BEGIN
BEGIN TRAN
SELECT @ID = ID From MyTable
WHERE IDType = 1 AND B ='Rev'
Update MyTable
Set IDType = 2
WHERE IDType = 1 AND B='Rev'
COMMIT TRAN
END
您可以使用 OUTPUT
和 INTO
子句在存储过程中执行 SELECT
,而不是使用 OUTPUT
参数。这是一个例子:
让我们创建测试数据:
CREATE TABLE MyTable(
ID INT IDENTITY(1, 1),
IDType INT,
B VARCHAR(6)
)
INSERT INTO MyTable(IDType, B) VALUES
(2, 'Rev'), (2, 'Rev'),
(2, 'Rev'), (1, 'Rev'),
(1, 'Rev'), (1, 'Rev'),
(1, 'NotRev'), (1, 'NotRev');
我的表格:
ID IDType B
----------- ----------- ------
1 2 Rev
2 2 Rev
3 2 Rev
4 1 Rev
5 1 Rev
6 1 Rev
7 1 NotRev
8 1 NotRev
我们想要的是更新行WHERE IDType = 2 AND B = 'Rev'
。在这种情况下,要更新的行是 ID IN(4, 5, 6)
.
现在创建您的存储过程:
CREATE PROCEDURE MyStoredProc
AS
BEGIN
UPDATE MyTable
SET IDType = 2
OUTPUT INSERTED.ID -- Returns the IDs of the updated rows
WHERE
IDType = 1
AND B = 'REV'
END
要获取更新的行,请使用 OUTPUT
子句。
执行您的存储过程将 return:
ID
-----------
4
5
6
我有一种情况需要通过存储过程发送状态为 Inactive 的 ID。此外,在同一个 SP 中,发送非活动 ID 后,我需要将其更新为活动 ID。所以我在交易中这样做。但是不知道如何发送 ID 集以及我的更新是否正确。我想我需要循环更新?请帮我构造一下。
Create Proc Name
@ID VARCHAR INT OUT
AS
BEGIN
BEGIN TRAN
SELECT @ID = ID From MyTable
WHERE IDType = 1 AND B ='Rev'
Update MyTable
Set IDType = 2
WHERE IDType = 1 AND B='Rev'
COMMIT TRAN
END
您可以使用 OUTPUT
和 INTO
子句在存储过程中执行 SELECT
,而不是使用 OUTPUT
参数。这是一个例子:
让我们创建测试数据:
CREATE TABLE MyTable(
ID INT IDENTITY(1, 1),
IDType INT,
B VARCHAR(6)
)
INSERT INTO MyTable(IDType, B) VALUES
(2, 'Rev'), (2, 'Rev'),
(2, 'Rev'), (1, 'Rev'),
(1, 'Rev'), (1, 'Rev'),
(1, 'NotRev'), (1, 'NotRev');
我的表格:
ID IDType B
----------- ----------- ------
1 2 Rev
2 2 Rev
3 2 Rev
4 1 Rev
5 1 Rev
6 1 Rev
7 1 NotRev
8 1 NotRev
我们想要的是更新行WHERE IDType = 2 AND B = 'Rev'
。在这种情况下,要更新的行是 ID IN(4, 5, 6)
.
现在创建您的存储过程:
CREATE PROCEDURE MyStoredProc
AS
BEGIN
UPDATE MyTable
SET IDType = 2
OUTPUT INSERTED.ID -- Returns the IDs of the updated rows
WHERE
IDType = 1
AND B = 'REV'
END
要获取更新的行,请使用 OUTPUT
子句。
执行您的存储过程将 return:
ID
-----------
4
5
6