2009年1月6日 星期二

OLE DB命令似乎只能處理簡單的SQL陳述式

最近在使用OLE DB命令,這個元件的用處就是能夠以來源內的每筆資料列內容當作參數,對資料表執行Insert,Update,Delete的語法,有點像Cursor一樣可作單筆處理,但使用時發現似乎只能使用簡單的SQL陳述式,inner join 的我不知怎麼下,因為在SSMS裡執行正常啊,子查詢好像確定是不能用在這囉

比如說,我使用inner join

update CUACCP5_Master_fset FLINE = 30from
dbo.CUACCP5_Master_f as f1 inner join dbo.CUACCP5_Master_p as p1on (f1.idt_key =
p1.idt_key ) where p1.Key1= ?


就出現錯誤

描述:無法繫結多重部分(Multi-Part)識別碼"p1.Key1"
然後我改成子查詢

update CUACCP5_Master_f set FLINE = 30from CUACCP5_Master_f where
CUACCP5_Master_f.idt_key in(select idt_key from CUACCP5_Master_p where Key1 =
?)
就出現錯誤
描述:無法從具有 sub-select 查詢的 SQL 陳述式衍生參數資訊。

去微軟技術論壇發問,也只有一個前輩回答我,但也得不到解決辦法,後來我想到一個辦法了,就是我把那個inner join的寫到預存程序裡,然後在OLE DB命令去執行那個預存程序囉,好麻煩啊

0 意見:

張貼留言