一直以為DTS的Execute SQL Task中不能將Input Global Variables的值賦給變量或是在臨時表和表變量中使用, 比如:
declare @cid int
declare @cvalue varchar(20)
set @cid = ?
set @cvalue = ?
delete from CDTemp
where ConditionalID = @cid and conditionalvalue = @cvalue
這樣寫的話是沒有辦法設置這兩個Input Global Variables的名字的, 因為這段script的parse過不了. 為什麼過不了呢? 我 猜 是因為變量是動
態declare的, 而不是DB中已經存在的對象, 因此sql server沒有辦法確定這段script是否正確.
其實我們可以bypass sqlserver的parse的 :)
我們先寫這樣一段:
Delete CDTemp
Where ConditionalID = ? and conditionalvalue = ?
然後設置兩個Input Global Variables的名字 然後刪除這句script, 將上面的那段script copy進來, 直接OK
事實證明這是可行的
同理, 在臨時表和表變量中也可以使用Input Global Variables
eg:
input #Temp (cid, cvalue)
values (?, ?)
關鍵詞: