我無法通過ADODB和Oracle執行帶有條款的SQL查詢。爲什麼我不能用ADODB和Oracle做「用x作爲(...)」?
也就是說,下面的代碼片段工作:
Dim cn As ADODB.connection
Set cn = ....
Dim rs As ADODB.recordSet
Set rs = New ADODB.Recordset
rs.Open "select 'foo' x from dual", cn
Do While Not rs.eof
...
rs.MoveNext
Loop
但是,下列不工作 - 它genererats一個運行時錯誤3704:當對象被關閉的操作是不允許的。
Dim cn As ADODB.connection
Set cn = ....
Dim rs As ADODB.recordSet
Set rs = New ADODB.Recordset
rs.Open "with w as (select 'foo' x from dual) select x from w", cn
Do While Not rs.eof
...
rs.MoveNext
Loop
很顯然,這是由一個更復雜的查詢 現實問題的一個精簡的示範。
在我看來,ADODB種類的查詢在將查詢傳遞給Oracle實例之前解析,並且不瞭解的條款。無論如何,在這方面的任何幫助是高度讚賞 。
Ohhhhhhhhhhhhhhh人認爲的要救我大量的工作!我在ADODB中寫了很多Oracle查詢,並一直避免使用WITH語句。這將提供更多的清晰度。如果可以的話,我會投這個票數百次。 – 2012-01-12 02:29:55
我不知道該說些什麼。這對MS來說太愚蠢了。一個嚴重的WTF。 – RAY 2014-10-06 08:46:37
謝謝你的回答,它真的幫了我。 – tuj 2017-03-24 20:41:52