0

DB初心者はこちら。bashコマンドを模倣することになっている「mkdir」というプロシージャがあります。

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
4

2 に答える 2

0

String sql = "execmkdir......である必要があります。

于 2013-02-02T18:23:12.087 に答える
0

問題はこの行です:

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

var1ストアドプロシージャは、およびという名前のパラメータを取りませんvar2。これらの存在しないプロシージャパラメータの値を指定しようとしているため、エラーが発生します。

試す

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

代わりは。

于 2013-02-03T18:06:33.263 に答える