Warum kann ich mit ADODB und Oracle kein "mit x als (...)" machen?

8

Ich kann keine SQL-Abfrage mit einer with-Klausel über ADODB und Oracle ausführen.

Das heißt, das folgende Snippet funktioniert:

%Vor%

Folgendes funktioniert jedoch nicht - es generiert einen Laufzeitfehler 3704: Der Vorgang ist nicht erlaubt, wenn das Objekt geschlossen ist.

%Vor%

Offensichtlich ist dies eine abgespeckte Demonstration des wirklichen Problems, das darin besteht einer anspruchsvolleren Abfrage.

Mir scheint, dass ADODB die Abfrage vor der Übergabe an die Oracle-Instanz analysiert und die with-Klausel nicht versteht. Wie auch immer, jede Hilfe dabei ist hoch geschätzt.

    
René Nyffenegger 23.02.2010, 09:07
quelle

2 Antworten

16

Ok, es sieht wirklich so aus, als ob ADODB erwartet, dass eine Abfrageanweisung tatsächlich mit select beginnt. Daher kann eine Umgehung für das Problem darin bestehen, die Anweisung in ein select * from ( .... ) wie folgt einzufügen:

%Vor%     
René Nyffenegger 23.02.2010, 13:46
quelle
1

Die obige Methode hat bei mir nicht funktioniert.

Hinzufügen von ";" vor dem WITH-Schlüsselwort hat das Problem gelöst.

Dim sql als Zeichenfolge sql="; mit w as (wähle 'foo' x von dual) wähle x aus w"

rs. Öffnen Sie sql, cn

    
Sachin 23.01.2013 16:27
quelle

Tags und Links