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