【发布时间】:2013-01-11 07:58:08
【问题描述】:
我在 Oracle 11g 上有一个 pl/sql 过程,它具有以下参数:
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"
我必须调试程序一百次,但一切似乎都是正确的类型并且参数的数量是正确的。
我完全不知道我做错了什么。用谷歌搜索后,我怀疑我可能没有正确设置布尔参数。
有什么想法吗?
【问题讨论】:
-
我以为 JDBC 参数是用“?”标识的。
标签: java sql oracle jdbc plsql