【问题标题】:inset into exec dbo.sp_executesql (multiple statement string)插入到 exec dbo.sp_executesql(多语句字符串)
【发布时间】:2017-07-13 12:38:00
【问题描述】:

我使用这个代码:

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

之后

insert @tbl EXEC dbo.sp_executesql @SQLString

它似乎有效,但有人可以给我一些明确的信息吗?我期望 executesql 必须是“忠实的”,与它之前的插入语句完全相关。然而,似乎将选择提供给插入并独立执行删除表没有问题。另外,是 ;在需要下降之前?

【问题讨论】:

    标签: sql tsql sql-insert sp-executesql


    【解决方案1】:

    您有多种方法可以将数据填充到表中:

    1. INSERT INTO TABLE VALUES
    2. SELECT INTO FROM
    3. INSERT INTO SELECT
    4. INSERT INTO EXEC

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

    更新:select 之后使用irrelevant statements 也可以,即使您的USP 中有多个select,但您必须确保所有返回的结果(select 语句)需要与您所指的表定义。

    【讨论】:

    • 所以让我用更清楚的方式陈述这个问题:如果插入到 exec 中,只要 exec 的 FIRST 语句是 select 或 values 语句,那么 exec 字符串可能有之后有多少不相关的陈述?
    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多