ADODBとOracleを介してwith句を使用してSQLクエリを実行できません。
つまり、次のスニペットが機能します。
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
ただし、以下は機能しません。実行時エラー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インスタンスに渡す前に解析し、 with句を理解しないように思われます。とにかく、これに関するどんな助けも大歓迎です。