Почему я не могу сделать “с x как (…)” с ADODB и Oracle?

Мне не удается выполнить SQL-запрос с с пунктом через ADODB и Oracle.

Таким образом, следующие работы отрывка:

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 и не поймет с пунктом. Так или иначе любая справка на этом высоко ценится.

8
задан René Nyffenegger 23 February 2010 в 09:07
поделиться

1 ответ

Хорошо, действительно кажется, что ADODB ожидает, что оператор запроса действительно начнется с select . Таким образом, решение проблемы может заключаться в заключении оператора в ] select * from (....) вот так:

Dim sql As String
sql = "with w as (select 'foo' x from dual) select x from w"

' enclose the statement:
sql = "select * from (" & sql & ")"

rs.Open sql, cn
17
ответ дан 5 December 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: