Bonjour,

J'ai une procédure stockée...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CREATE OR REPLACE PROCEDURE PS001_ENT01 (NBRECORD OUT INTEGER, ERRORH OUT BOOLEAN) IS
(...)
...qui est exécutée dans du code .NET [VS2003] :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
(...)
myOleDbCommand = New OleDbCommand("MONSCHEMA.PS001_ENT01", myOleDbConnection)
myOleDbCommand.CommandType = CommandType.StoredProcedure
 
myOleDbParameter = myOleDbCommand.Parameters.Add("NBRECORD", OleDbType.Integer)
myOleDbParameter.Direction = ParameterDirection.Output
 
myOleDbParameter = myOleDbCommand.Parameters.Add("ERRORH", OleDbType.Boolean)
myOleDbParameter.Direction = ParameterDirection.Output
(...)
Mon problème est que j'ai un message d'erreur quand j'exécute la procédure stockée.

5 - ORA-06550: Ligne 1, colonne 7 :
PLS-00306: numéro ou types d'arguments erronés dans appel à 'PS001_ENT01'
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored


J'arrive pourtant à la lancer à la main dans Toad sans aucun souci.

Je pense qu'il n'aime pas le type OleDbType.Boolean... Mais pourtant, c'est bien un BOOLEAN que j'ai déclaré du côté d'Oracle.

Si je mets dans Oracle non pas BOOLEAN mais INTEGER, et OleDbType.Integer côté .NET, ça marche.
Pour dire que l'erreur vient bien du type de la valeur retournée.

Quelqu'un a une idée ?

Merci.