有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的PL/SQL过程调用

这里是DB初学者。 我有一个名为“mkdir”的过程,它应该模拟bash命令:

create or replace 
PROCEDURE "MKDIR" 
(
  id_p in number
, name in varchar2  
) as 
begin
  insert into folders(name,id_p) values(name,id_p);
  dbms_output.put_line('Created folder: '||name);

exception
when DUP_VAL_ON_INDEX then
  dbms_output.put_line('Folder with the same name already exists!');
when NO_DATA_FOUND then
  dbms_output.put_line('Parent id not found!');

end mkdir;

以下是我的Java程序的一部分:

String sql = "begin mkdir(var1=>?, " +"var2=>?); end;";

st = conn.prepareCall(sql);
st.setInt(1,1);             
st.setString(2, "hello");

st.execute(); 

我试过切换变量的顺序,但没用。我意识到这是一个极其愚蠢的错误,但我一生都无法解决它

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

共 (2) 个答案

  1. # 1 楼答案

    应该是的 String sql=“exec mkdir……”

  2. # 2 楼答案

    问题在于这一行:

    String sql="begin mkdir(var1=>?, " +"var2=>?); end;";
    

    存储过程不接受名为var1var2的参数。出现错误是因为您试图为这些不存在的过程参数提供值

    试一试

    String sql="begin mkdir(id_p=>?, " +"name=>?); end;";
    

    相反