posted 9 years ago
Hi
I have used the following code to call a procedure using WebLogic JNDI.
Context ctx = null;
Connection conn = null;
ResultSet rs = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
try {
ctx = new InitialContext(ht);
DataSource ds = (DataSource) ctx.lookup("jdbc/miSOADS");
conn = ds.getConnection();
CallableStatement cstmt = conn.prepareCall("{call mi.PROC_START_JOB(?)}");
cstmt.registerOutParameter(2, Types.INTEGER); // I GET ERROR HERE. THE PROCEDURE IS GIVEN BELOW:
cstmt.setString(1, "jobcode");
cstmt.executeUpdate();
PROCEDURE
========
create or replace
PROCEDURE PROC_START_JOB (jobcode varchar2,flag OUT NUMBER) IS
sys_date DATE;
BEGIN
SELECT cur INTO sys_date FROM SYSTEM_TAB;
flag:=0;
SELECT count(*) into cnt FROM JOB_DETAILS WHERE STATUS IN ('STAGED','ERROR','RESTART');
IF cnt=0 THEN
INSERT INTO JOB (ID,JOB_CODE,STATUS,RUN_COUNT,SYSTEM_DATE)VALUES(SEQ_ID.NEXTVAL,rec.CODE,'STAGED',1,sys_date);
COMMIT;
ELSE
flag:=1;
END IF;
END PROC_START_JOB;
I AM GETTING THE FOLLOWING EXCEPTION
============================
java.sql.SQLException: Invalid column index
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)