//對于in參數(shù),已經(jīng)賦值 call.setInt(1,7839); java.lang.NullPointerException at demo.oracle.TestProcedure.testProcedure(TestProcedure.java:33)
package demo.oracle;
import java.sql.CallableStatement;
import java.sql.Connection;
import org.junit.Test;
import com.sun.java_cup.internal.runtime.Symbol;
import demo.utils.JDBCUtils;
import oracle.jdbc.driver.OracleTypes;
/*
?* Create Or Replace Procedure queryempinform(eno In Number,
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pename Out Varchar2,
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?psal Out Number,
?*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pjob Out Varchar2)
?*
?*/
public class TestProcedure {
@Test
public void testProcedure(){
//{call <procedre-ane>[(<arg1>,<arg2>,...)]}
String sql="{call queryempinform(?,?,?,?)}";
Connection conn=null;
CallableStatement call=null;
try {
//得到一個連接
conn=JDBCUtils.getConnection();
//通過連接創(chuàng)建statment
call=conn.prepareCall(sql);
//對于in參數(shù),賦值
call.setInt(1,7839);
//對于out參數(shù),申明
//OracleType就是將oracle內(nèi)所以類型轉(zhuǎn)變成JAVA常量
call.registerOutParameter(2,OracleTypes.VARCHAR);
call.registerOutParameter(3,OracleTypes.NUMBER);
call.registerOutParameter(4,OracleTypes.VARCHAR);
//執(zhí)行調(diào)用
call.execute();
//取出結(jié)果
String name = call.getString(2);
double sal =call.getDouble(3);
String job = call.getString(4);
System.out.println(name+"\t"+sal+"\t"+job+"\t");
} catch (Exception e) {
e.printStackTrace();
}finally{
//關(guān)閉資源
JDBCUtils.shifang(conn, call, null);
}
}
}
2018-10-18
可能是沒對取到的值判空吧