2017-07-13 113 views
0

我用這個代碼:嵌入到高管dbo.sp_executesql(多語句字符串)

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

事後

insert @tbl EXEC dbo.sp_executesql @SQLString 

這似乎是工作,但有人可以給我一些明確的信息這個?我期待executeql的東西必須是「忠實的」,就像它的完整相關的插入語句一樣。然而,它看起來沒有任何問題將select提供給插入,並獨立執行drop table。另外,是的;必要之前下降?

回答

0

你有很多方法來填充數據表:

  1. INSERT INTO TABLE VALUES
  2. SELECT INTO FROM
  3. INSERT INTO SELECT
  4. INSERT INTO EXEC < - 你正在談論

;不是很必要y,只是爲了分開批處理,結果將是相同的,但對於一些可能需要考慮範圍的情況,例如批處理或會話,則它很重要。

UPDATE: 這是細跟irrelevant statements後的select的,甚至有在你的USP多個select,但你必須確保所有的返回結果(select語句)必須兼容您所指的表格定義。

+0

因此,讓我以更清晰的方式陳述問題:如果插入到exec中,只要exec的FIRST語句是select或values語句,那麼exec字符串可以包含任意數量的不相關語句之後? –

+0

檢查我的更新;)@GeorgeMenoutis – LONG