2010-05-17 3 views
1

Это относится к моему недавнему вопросу: Force Oracle error on fetchADO «Неизвестная ошибка» вместо реальной ошибки при извлечении на стороне сервера курсор

теперь я в состоянии воспроизвести сценарий, при котором с помощью ADO с OLEDB Provider Oracle, я могу заставить например, ORA-01722: invalid number при вызове Recordset.MoveNext Однако это не ошибка, возвращаемая приложению. Вместо этого приложение видит Provider error '80004005' Unspecified error. Как я могу заставить приложение увидеть реальную ошибку из базы данных? Это касается Oracle 10g (клиент и сервер), если это имеет значение.

Пример кода примерно следующим образом:

Dim con As New ADODB.Connection 
Dim cmd As New ADODB.Command 
Dim rs As ADODB.Recordset 

con.ConnectionString = "Provider=OraOLEDB.ORACLE;Data Source=xxx;User Id=yyy;Password=zzz" 
con.CursorLocation = adUseServer 
con.Open 
Set cmd.ActiveConnection = con 
cmd.CommandText = "select * from table(ret_err)" 
cmd.Prepared = True 
Set rs = cmd.Execute 
While Not rs.EOF 
    rs.MoveNext 
Wend 

ответ

0

SQLCODE и SQLERRM должны быть возвращены с вызовом SQL. Это looks like Ошибка ADO - это interface для доступа к этому.

+0

Это не работает в очевидном случае. Коллекция 'Errors' содержит только один элемент и один элемент имеет описание« Unspecified Error ». Есть еще трюк? – Dan