我有一个 SQL Proc,它在不匹配时使用 MERGE 语句进行 INSERT,并且 OUTPUT 值存储在表变量中
INSERT
(
[Code],
[BenchmarkCode],
[ExternalCode],
[DefinitionId]
)
VALUES
(
Source.Code, Source.BenchmarkCode, Source.ExternalCode, Source.DefinitionId
)
OUTPUT inserted.Id, inserted.DefinitionId, inserted.PortfolioCode, inserted.BenchmarkCode, inserted.ExternalCode
INTO @inserted_values
如何使用 DAPPER、IDbAdapter 从 @inserted_values 获取值
要在 SQL 中使用 Dapper 执行存储过程后从 @inserted_values 表变量中检索值,您可以结合使用 SQL 命令和 Dapper 的 Query 方法。具体方法如下:
假设您有一个名为 YourStoredProcedureName 的存储过程,您可以使用 Dapper 执行它,然后查询 @inserted_values 表变量以获取插入的值。
DECLARE @inserted_values TABLE (
Id INT,
DefinitionId INT,
PortfolioCode VARCHAR(100),
BenchmarkCode VARCHAR(100),
ExternalCode VARCHAR(100)
);
-- Execute the stored procedure
EXEC YourStoredProcedureName;
-- Retrieve values from the @inserted_values table variable
SELECT Id, DefinitionId, PortfolioCode, BenchmarkCode, ExternalCode
FROM @inserted_values;
此 SQL 脚本首先声明一个表变量 @inserted_values,其结构与存储过程的 OUTPUT 子句中使用的结构相同。然后,它执行存储过程 YourStoredProcedureName,该过程用插入的值填充表变量。最后,它从表变量中选择值。