Java基础知识:Java中调用存储过程或函数2
}
public static void main(String[] args) throws SQLException {
//System.out.println(OraclePro.getConnection());
Connection con=OraclePro.getConnection();
CallableStatement cs=con.prepareCall("{?=call get_pname}");//没有参数的函数
cs.registerOutParameter(1, Types.VARCHAR);//第一个占位为输出,类型是varchar
cs.execute(); //不能忘记execute()
System.out.println(cs.getString(1)); //打印输出结果,对应registerOutParameter
}
}
[java]
//有1个输入参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname1(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2,25); //输入参数是25
cs.execute();
//有1个输出参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname2(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(2));
//上面两个结果一样,因为两个意思是一样的
//1个输入参数,1个输出参数
CallableStatement cs=con.prepareCall("{?=call get_pname3(?,?)}");
//第1个是返回值,第2个是输入参数,第3个是输出参数
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2, 25);
cs.registerOutParameter(3, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(3));
调用存储过程与调用函数的方法一样,就只是con.prepareCall("{call procedure(?,?)}")没有?=.