2010-05-17 21 views
1

aller chercher du côté serveur Cela concerne ma question récente: Force Oracle error on fetchADO « Erreur non spécifiée » au lieu d'erreur réelle lorsque le curseur

Je suis maintenant en mesure de reproduire un scénario où l'utilisation d'ADO avec le fournisseur Oracle OLEDB, je peux forcer une erreur telle que ORA-01722: invalid number à se produire lors de l'appel Recordset.MoveNext Cependant, ce n'est pas l'erreur qui est renvoyée à l'application. Au lieu de cela, l'application voit Provider error '80004005' Unspecified error. Comment puis-je obtenir l'application pour voir la vraie erreur de la base de données? C'est avec Oracle 10g (client et serveur), si c'est important.

Exemple de code est à peu près comme suit:

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 

Répondre

0

SQLCODE et SQLERRM doivent être retournés avec un appel SQL. It looks like ADO Error est le interface pour y accéder.

+0

Cela ne fonctionne pas dans le cas évident. La collection 'Errors' contient uniquement un élément et un élément a une Description de" Erreur non spécifiée ". Y a-t-il un autre truc? – Dan