我想使用 Java CollableStatement 中的命名参数执行 Oracle 存储过程。从语法上讲,当我们执行我们得到 SQL 错误的应用程序时,一切都很好 -
Java 代码 -
int method1(){
CallableStatement stmt stmt = connection.prepareCall("{call "+strSQL.toString()+"}");
sp_copy_my_tree(?,?,?)
stmt.setInt("src_cd_ekey", 2057);
stmt.setInt("trg_ef_ekey", 8222);
stmt.setInt("trg_display_order", 1]);
returnValue = stmt.executeUpdate(strSQL.toString());
return returnValue ;
}
Oracle 存储过程 -
create or replace PROCEDURE sp_copy_my_tree (src_ab_ekey IN NUMBER DEFAULT NULL,
src_cd_ekey IN NUMBER DEFAULT NULL, trg_ef_ekey IN NUMBER DEFAULT NULL,
trg_gh_ekey IN NUMBER DEFAULT NULL, trg_display_order IN NUMBER)
IS
begin
--- Some PL/SQL code ---
END ;
当我执行上面的 java 语句时,我得到了异常 -
*java.sql.SQLException: 尝试设置 SQL 中没有出现的参数名称:src_cd_ekey*
注意-我还尝试以相同的过程顺序传递所有参数,而对于其他 2 个参数,我传递了 null。但仍然得到相同的异常。
请有人帮助我们解决这个问题。