Ich kann eine SQL-Abfrage mit einer mit Klausel über ADODB und Oracle nicht ausführen.Warum kann ich mit ADODB und Oracle kein "mit x als (...)" machen?
Das heißt, die folgenden Schnipsel funktionieren:
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
Allerdings sind die folgende nicht - es genererats einen Laufzeitfehler 3704: Operation ist nicht erlaubt, wenn das Objekt geschlossen ist.
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
Offensichtlich ist dies eine abgespeckte Demonstration des realen Problems, das einer komplizierteren Abfrage besteht.
Es scheint mir, dass ADODB die Abfrage vor der Übergabe an die Oracle-Instanz analysiert und die mit der Klausel nicht versteht. Wie auch immer, jede Hilfe hier ist in hohem Grade geschätzt.
Ohhhhhhhhhhhhhhh Mann, der gonna save me a viel Arbeit! Ich schreibe viele Oracle-Abfragen in ADODB und vermeide die Verwendung der WITH-Anweisung. Dies wird viel mehr Klarheit schaffen. Ich würde das hundert Mal abstimmen, wenn ich könnte. –
Ich weiß nicht was ich sagen soll. Das ist soooo dumm von MS. eine ernste WTF. – RAY
Danke für diese Antwort, es hat mir wirklich geholfen. – tuj