SQL Server 2005 Express 版本输出关键字语法

发布于 2024-08-23 11:22:10 字数 557 浏览 6 评论 0原文

我正在使用 SQL Serer 2005 Express 中的 Output 关键字。我编写了以下查询:

Declare @tempTable as Table(masterLotDB datetime)
Insert  into dbo.tblMasterLot (RecordCreation)
Values ('2009-10-02')
OUTPUT INSERTED.RecordCreation
into @tempTable

我收到语法错误 Msg 102, Level 15, State 1, Line 6 “OUTPUT”附近的语法不正确。我尝试过各种组合。

该查询在没有 OUTPUT 内容的情况下工作(即,它在 tblMasterLot 中放入一条新记录,除了定义为“非空”之外,tblMasterLot.RecordCreation 没有什么特别的。它不是主键或身份。

  1. 发生了什么事?任何机会“OUTPUT” SQL Express 2005 中并不真正支持?
  2. 有关于 OUTPUT 的教程吗?(特别是与 Insert 结合使用)。

I'm playing with the Output keyword in SQL Serer 2005 Express. I've written the following query:

Declare @tempTable as Table(masterLotDB datetime)
Insert  into dbo.tblMasterLot (RecordCreation)
Values ('2009-10-02')
OUTPUT INSERTED.RecordCreation
into @tempTable

I get a syntax error of Msg 102, Level 15, State 1, Line 6
Incorrect syntax near 'OUTPUT'. I've tried various combinations.

The query works without the OUTPUT stuff (i.e. it puts a new record in tblMasterLot, There is nothing special about tblMasterLot.RecordCreation other than being defined 'not null'. It's not a primary key or identity.

  1. What's going on? Any chance 'OUTPUT' is not really supported in SQL Express 2005?
  2. Any tutorials on OUTPUT? (especially in conjuntion with Insert).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走干脆点 2024-08-30 11:22:10

OUTPUT 子句应位于 VALUES 之前

请参阅示例 A 此处

跟进:
我使用您的代码重现了您原来的“输出附近语法不正确”错误。但是,通过更改子句的顺序,它可以正常工作。这是我的代码:

create table #tmp_test (recordCreation datetime)

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

输出:
(1 行受影响)

The OUTPUT clause should come before VALUES

See Example A here

Following up:
I reproduced your original 'incorrect syntax near OUTPUT' error using your code. However, by changing the order of the clauses, it works fine. Here's my code:

create table #tmp_test (recordCreation datetime)

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

Output:
(1 row(s) affected)

可是我不能没有你 2024-08-30 11:22:10

输出已插入。不适用于 Express 版本。

尝试使用 @@IDENTITY

将脚本替换

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

DECLARE @TempDate DATETIME

INSERT INTO #tmp_test (RecordCreation)
VALUES ('2009-10-02')

SET @TempDate = @@IDENTITY

SELECT @TempDate

Output Inserted. doesnot work with Express edition.

Try with @@IDENTITY instead

Replace the script

Declare @tempTable as Table(masterLotDB datetime)

Insert  into #tmp_test (RecordCreation)
OUTPUT INSERTED.RecordCreation into @tempTable
Values ('2009-10-02')

With

DECLARE @TempDate DATETIME

INSERT INTO #tmp_test (RecordCreation)
VALUES ('2009-10-02')

SET @TempDate = @@IDENTITY

SELECT @TempDate
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文