L'appel d'une procédure Oracle PL / SQL en Java à l'aide d'un CallableStatement avec un paramètre booléen IN donne une erreur Oracle PLS-00306:

J'ai un pl/sql procédure sur une base de données Oracle 11g qui a les paramètres suivants:

PROCEDURE validate_product
   ( product_id_in IN varchar2 , 
     username_in in varchar2, 
     source_in varchar2,    
     source_id_in varchar2 , 
     isEuProduct in boolean , 
     error_code out varchar2, 
     product_type out varchar2  
     )

Je suis en train d'appel au-dessus de la procédure stockée à partir de l'intérieur de java à l'aide du code suivant:

cstmt = getConnection().prepareCall("begin " + DBUtil.SCHEMANAME + ".PRODUCT_UTILITIES.validate_product(:1,:2,:3,:4,:5,:6,:7); end;");

cstmt.registerOutParameter(6, Types.CHAR); 
cstmt.registerOutParameter(7, Types.CHAR); 

cstmt.setString(1, productId);
cstmt.setString(2, username);
cstmt.setString(3, sourceName);
cstmt.setString(4, sourceId);
cstmt.setBoolean(5, isEUProduct);

cstmt.execute();

Les types de java variables sont toutes String à l'exception de isEUProduct qui est boolean. Chaque fois que je lance le programme ci-dessus j'obtiens l'erreur suivante:

PLS-00306: wrong number or types of arguments in call to validate_product ORA-06550: line 1, column 7: PL/SQL: Statement ignored"

J'ai débogué le programme d'une centaine de fois, mais tout semble être le bon type et le nombre d'arguments sont corrects.

Je suis complètement coincé mais qu'est ce que je fais de mal. Après avoir googlé autour, j'ai penser que peut-être je ne suis pas le réglage du paramètre booléen correctement.

Des idées?

source d'informationauteur ziggy