2017-09-14 36 views
1

我想知道是否可以讓腳本執行返回的行。我有選擇我設計返回2行,它看起來像我可以執行select返回的行嗎?

alter table zamestnanci drop DF__zamestnan__datum__2E1BDC42 go sp_bindefault 'abc','zamestnanci.datum_pridania'

我滴速默認,使綁定默認。

感謝您的幫助。

+0

您將需要使用動態SQL類似的東西。 [動態SQL的詛咒和祝福--Erland Sommarskog](http://www.sommarskog.se/dynamic_sql.html) – SqlZim

+0

將結果輸出到文本,而不是網格,然後在查詢窗口中複製+粘貼 – sepupic

+0

如果您想要自動化它,可以使用'sp_executeSql'和一個遊標。 – Adwaenyth

回答

1

如果您可以在一個批處理中運行所有語句,並且它們已經以分號正確結束,則可以構建一個SQL字符串並一次執行整個事件。

DECLARE @sql NVARCHAR(MAX) = (SELECT SomeColumn 
           FROM [Table] 
           FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'); 
EXECUTE sp_executesql @sql; 

,如果你想通過一個執行語句一個你可以使用光標:

DECLARE sqlCursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY 
FOR 
    SELECT SomeStatement 
    FROM [Table]; 

DECLARE @sql NVARCHAR(MAX); 
OPEN sqlCursor; 

FETCH NEXT FROM sqlCursor INTO @sql; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    EXECUTE sp_executesql @sql; 
    FETCH NEXT FROM sqlCursor INTO @sql; 
END 
+0

第一種方法很容易在應該是「批處理中唯一的語句」的命令上失敗,因爲它沒有批分隔符,並且所有的批處理都在1批中執行 – sepupic

相關問題