我想将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
变量@tranID应该是一个列表或数组来保存id。是否有可能成为SQL Server?
答案 0 :(得分:3)
您只需声明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);
根据您在此之后要对值做什么,您可以声明光标循环遍历它们或直接从变量中选择。
您还可以考虑使用临时表,具体取决于您需要的范围。
答案 1 :(得分:0)
试试这个,只取第一行的例子。你试试这个吗?
select DOCUMENT_SET_TRANSACTION.DOCUMENT_SET_TRANSACTION_ID,
(STUFF((SELECT '-' + convert(varchar(max),DOCUMENT_SET_TRANSACTION.DOCUMENT_SET_TRANSACTION_ID)
FROM ESG.DOCUMENT_SET_TRANSACTION
FOR XML PATH ('')), 1, 2, '')) AS example
FROM ESG.DOCUMENT_SET_TRANSACTION