Having trouble calling Oracle stored procedure in java -
i'm having trouble calling oracle stored procedure in java. added stored procedure database this:
string sql = "create or replace procedure liveresults() " + "is " + "begin" + " select pool_id, pool_mbr_id, bsln_cd, pge_typ_nm, serv_nm, cl_file_nm" + " lbmadm.tppo_mstr_map " + " order serv_nm" + " pge_typ_nm = 'live' ; " + "end"; stmtlive = con.createstatement(); stmtlive.executeupdate(sql);
and i'm trying call :
callablestatement cs; try { cs = con.preparecall("{call liveresults() }"); rs = cs.executequery(); while (rs.next()) { .....
however, i'm getting following errors:
java.sql.sqlexception: ora-06550: line 1, column 7: pls-00905: object ut9j.generate_sql_for_live invalid ora-06550: line 1, column 7: pl/sql: statement ignored
i can't quite figure out i'm going wrong. read oracle's documentation on , believe did right, guess not. if can shed light on situation i'd appreciate it.
there multiple issues here..
1) why want create procedure inside java code? should create directly in oracle using sqlplus or other database tool.
2) oracle not expect () when there no in/out/in-out parameters, don't need them. need "as" or "is" keyword after "create or replace procedure". otherwise, give compile time error seeing..
1 create or replace procedure live 2 3 begin 4 null; ---this have logic, --null indicates "do nothing". concentrate on --the "declare" issues 5* end; sql> / procedure created.
3) third error selecting fields table, there no varibles "into" selecting them.
1 create or replace procedure live 2 3 v_ename scott.emp.ename%type; 4 begin 5 select ename 6 scott.emp 7 empno = 7369; 8* end; sql> / warning: procedure created compilation errors. sql> show errors errors procedure live: line/col error -------- ----------------------------------------------------------------- 5/3 pls-00428: clause expected in select statement 1 create or replace procedure live 2 3 v_ename scott.emp.ename%type; 4 begin 5 select ename 6 v_ename 7 scott.emp 8 empno = 7369; 9* end; sql> / procedure created.
4) creating procedure called "live" , calling "liveresults".again, don't need () after procedure call.
5) based on allan's comments below , cybernate's answer(+1), if trying return result set, should open refcursor select , return calling program.
Comments
Post a Comment