insert into exec dbo.sp_executesql (多语句字符串)

inset into exec dbo.sp_executesql (multiple statement string)

我使用这个代码:

select @SQLString=N'select ....(long select query).....'
    + char(10)  + '; drop table _item_list '

之后

insert @tbl EXEC dbo.sp_executesql @SQLString

它似乎有效,但是有人可以给我一些明确的信息吗?我期望 executesql 必须是 "faithful",因为它的整体与它前面的插入语句相关。然而,似乎将 select 馈送到插入物并独立地执行 drop table 没有问题。另外,是;降前有必要吗?

您可以通过多种方式将数据填充到 table:

  1. INSERT INTO TABLE VALUES
  2. SELECT INTO FROM
  3. INSERT INTO SELECT
  4. INSERT INTO EXEC <-- 你在说什么

;不是很有必要,只是为了分开batch,结果是一样的,但是对于一些可能需要考虑scope的,比如batch或者session,那就很重要了。

更新: select 之后的 irrelevant statements 没问题,即使你的 USP 中有多个 select,但你必须确保所有返回的结果(select声明)需要与您所指的 table 定义兼容。