【发布时间】:2012-01-18 14:35:58
【问题描述】:
可能重复:
Incorrect syntax near the keyword 'with'…previous statement must be terminated with a semicolon
我想选择分层数据并将其插入表中。 因此我需要在我的插入中使用 WITH 语句。
这很好用:
create table test_table
(
id int
)
with t_table
as
(select 12345 wert)
insert into test_table (id)
select wert from t_table
但这会产生“WITH关键字附近的语法错误”错误:
CREATE PROCEDURE p_insert_test
AS
BEGIN
with t_table
as
(select 12345 wert)
insert into test_table (id)
select wert from t_table
END
我猜 T-SQL 不喜欢 INSERT 关键字之前的 WITH 关键字。 如何在存储过程中进行这种插入?
谢谢!
【问题讨论】:
-
你能用准确的代码和错误编辑你的帖子吗?您的第一个代码块有一个错误——它要么需要作为两个语句运行,要么在批次之间放置一个 GO。此外,我能够毫无错误地执行该过程。虽然@JNK 必须是批处理中的第一项是正确的,但我在这里看到的唯一要求是拆分创建表和临时 with-select。
-
@EBarr - 第一个语句有效,但第二个无效。听起来您认为第一个语句不起作用。
-
没错。如果您剪切并粘贴第一个块,则会出现语法错误(消息 102,级别 15,状态 1,第 7 行。“t_table”附近的语法不正确)。它应该在创建表和 WITH 之间有一个“GO”,或者在创建表之后有一个分号。
标签: sql sql-server tsql with-statement insert-select