使用 .NET 从 SQL INSERT 获取 OUTPUT table
Get OUTPUT table from SQL INSERT using .NET
我正在尝试从 SQL 服务器数据库 (v14) 上的 INSERT 命令获取输出 table。
DECLARE @i TABLE (TICKET_ID int, CREATED_DATE datetime);
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
OUTPUT INSERTED.TICKET_ID, INSERTED.CREATED_DATE INTO @i
VALUES (@s, @t, @q);
SELECT * FROM @i;
我有 3 个参数分别由 @s、@t 和 @u 为站点、票证标题和用户填充。
我在 4.5 框架上使用带有 ExecuteReader 函数的 SqlClient.SqlDataReader Object 调用命令。
该命令成功地将记录插入数据库table,但没有return table @i 带有工单ID(自动递增)和创建日期(默认= GETDATE),这是我希望在保存到数据库后呈现给用户的内容。
我尝试删除命令中的 @i TABLE,但出现 .NET 错误:
The target table 'name' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause
我找到了几个链接,它们提供了一些解决这些问题的方法,但没有解决我的问题
Cannot use UPDATE with OUTPUT clause when a trigger is on the table
是否可以提供任何帮助来帮助我实现目标?
我不知道你为什么需要 table。我想你只需要执行这个:
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
OUTPUT inserted.TICKET_ID, inserted.CREATED_DATE
VALUES (@s, @t, @q);
我在 table 中看不到任何值。当您执行此语句时,它将 return 结果发送给客户端,就像 SELECT 语句一样。
希望对您有所帮助。
这似乎很痛苦,但另一种选择可能只是这样做:
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
VALUES (@s, @t, @q);
SELECT TICKET_ID, CREATED_DATE
FROM dbo.TICKET
WHERE SITE_ID = @s AND TICKET_TITLE = @t AND USER_ID = @q;
我正在尝试从 SQL 服务器数据库 (v14) 上的 INSERT 命令获取输出 table。
DECLARE @i TABLE (TICKET_ID int, CREATED_DATE datetime);
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
OUTPUT INSERTED.TICKET_ID, INSERTED.CREATED_DATE INTO @i
VALUES (@s, @t, @q);
SELECT * FROM @i;
我有 3 个参数分别由 @s、@t 和 @u 为站点、票证标题和用户填充。
我在 4.5 框架上使用带有 ExecuteReader 函数的 SqlClient.SqlDataReader Object 调用命令。
该命令成功地将记录插入数据库table,但没有return table @i 带有工单ID(自动递增)和创建日期(默认= GETDATE),这是我希望在保存到数据库后呈现给用户的内容。
我尝试删除命令中的 @i TABLE,但出现 .NET 错误:
The target table 'name' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause
我找到了几个链接,它们提供了一些解决这些问题的方法,但没有解决我的问题
Cannot use UPDATE with OUTPUT clause when a trigger is on the table
是否可以提供任何帮助来帮助我实现目标?
我不知道你为什么需要 table。我想你只需要执行这个:
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
OUTPUT inserted.TICKET_ID, inserted.CREATED_DATE
VALUES (@s, @t, @q);
我在 table 中看不到任何值。当您执行此语句时,它将 return 结果发送给客户端,就像 SELECT 语句一样。
希望对您有所帮助。
这似乎很痛苦,但另一种选择可能只是这样做:
INSERT INTO dbo.TICKET (SITE_ID, TICKET_TITLE, USER_ID)
VALUES (@s, @t, @q);
SELECT TICKET_ID, CREATED_DATE
FROM dbo.TICKET
WHERE SITE_ID = @s AND TICKET_TITLE = @t AND USER_ID = @q;