У меня есть процедура pl/sql на Oracle 11g, которая имеет следующие параметры:
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
)
Я пытаюсь вызвать вышеупомянутую хранимую процедуру из java, используя следующий код:
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();
Типы переменных java - это все String
, за исключением isEUProduct
, который равен boolean
. Всякий раз, когда я запускаю указанную выше программу, я получаю следующую ошибку:
PLS-00306: wrong number or types of arguments in call to validate_product ORA-06550: line 1, column 7: PL/SQL: Statement ignored"
Я должен был отлаживать программу сто раз, но все кажется правильным типом, и количество аргументов верное.
Я полностью застрял в том, что я делаю неправильно. У меня возникли подозрения, что, возможно, я не задаю логический параметр правильно.
Любые идеи?