如何在 SQL Server 变量中存储多个值

Dav*_*vid 0 sql database sql-server

我想将 SELECT 语句中的值存储到一个能够保存多个值的变量中,因为我的 SELECT 语句返回多个 INT 类型的值。到目前为止,这就是我的 SP 的样子。

ALTER PROCEDURE "ESG"."SP_ADD"
AS
BEGIN

DECLARE @Id table(identifiers VARCHAR);

INSERT INTO @Id (identifiers) VALUES('axaa1aaa-aaaa-a5aa-aaaa-aa8aaaa9aaaa');
INSERT INTO @Id (identifiers) VALUES('bxbb1bbb-bbbb-b5bb-bbb4-bb8bbbb9bbbf');

DECLARE @tranID INT = (SELECT 
DOCUMENT_SET_.DOCUMENT_SET_TRANSACTION_ID 
                            FROM DOCUMENT_SET_TRANSACTION 
                                    WHERE DOCUMENT_SET_TRANSACTION.IDENTIFIER IN (SELECT identifiers FROM @Id));  

END
Run Code Online (Sandbox Code Playgroud)

变量@tranID 应该是一个列表或一个数组来保存 ID。是否有可能做到 SQL Server?

roy*_*yal 5

你可以声明一个类型的变量 table

DECLARE @tblTrans TABLE (
    tranID INT
);

INSERT INTO @tblTrans 
SELECT DOCUMENT_SET_TRANSACTION.DOCUMENT_SET_TRANSACTION_ID 
FROM ESG.DOCUMENT_SET_TRANSACTION 
WHERE DOCUMENT_SET_TRANSACTION.IDENTIFIER 
    IN (SELECT identifiers FROM @envelopeId);
Run Code Online (Sandbox Code Playgroud)

根据您想对这之后的值做什么,您可以声明一个游标来循环它们或直接从变量中选择。

您还可以考虑使用临时表,具体取决于您需要的范围。