T-SQL:如何使用 PEAR DB 从 INSERT 语句中检索 OUTPUT?

T-SQL : How can I retrieve the OUTPUT from an INSERT statement with PEAR DB?

这是我第一次使用T-SQL

我目前正在尝试使用此查询从 T-SQL 中的 INSERT 语句获取最后插入的 ID:

INSERT INTO TICKET( STATE, RECORD_DATE, ID_USER, TICKET_TYPE, TICKET_COM)
OUTPUT INSERTED.ID_TICKET AS lastId
VALUES ( 1, CONVERT(datetime, '24/02/2022 09:25:53'), 100, 1, 'It does not work')

如你所料,ID_TICKET是身份,auto_increment。 当我 运行 通过 MS SQL server management studio 时,我得到了预期的结果:一行,具有唯一的 lastId 列,其中包含最后插入的 id 的值。

但是在 PHP 上,当我使用来自 PEAR 数据库的 query() 方法 运行 进行此操作时,我 运行 遇到了一些问题。 通过阅读文档,在 SELECT 查询的情况下,DB->query() 只会 return 一个资源,而 INSERT 查询只会 return 一个 DB_OK 类型的答案: 这正是我在 PHP 中得到的。 因此我的问题是:如何使用 PEAR DB 从 INSERT 语句中检索 OUTPUT?

我想继续使用 PEAR,因为我正在向严重依赖它的现有内部网添加功能。 它使用 SQL Server 9.0 使用 PHP 5.2.9 和 PEAR DB 1.1.2.2.

托管在 IIS 7 上

最后,我只是通过删除 OUTPUT INSERTED.ID_TICKET AS lastId 行做了一个简单的 INSERT。 然后我在 SELECT @@IDENTITY as lastId 之后立即进行了第二次 query() 调用,现在它给出了所需的结果。

与 Álvaro González 的建议差不多。

现在,在 Dan Guzman 的建议下,在我原来的 INSERT 开头添加 SET NOCOUNT ON;OUTPUT 子句确实解决了问题! 我现在根据需要得到一个具有唯一行和列 lastId 的结果集。 我向你们两位致敬。