1.调用函数
CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
第一个?表示返回的值,后面的?可以是输入参数,也可以是输出参数。
第一个?是返回参数,所以必须有语句:
connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar是类型)
后面的?如果是输出参数,应该也加上registerOutParameter语句:
connection.registerOutParameter(2, Types.VARCHAR);(2是第2个占位符,Types.varchar是类型)
最后打印输出的结果:
System.out.println(cs.getString(1)); (1是对应输出参数,第一个输出参数)
2.调用存储过程
CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(与函数的区别是:没有?=)
java程序中要打印调用过程获得的值,需调用有输出参数的存储过程,用法和调用函数一样。
3.简单例子
package com.dgy.app;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class OraclePro {
/**
* 连接数据库
*/
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@PC-200911181406:1521:dgy";
String user = "dwj";
String pwd = "dwj";
con = DriverManager.getConnection(url,user,pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
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
}
}
//有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(?,?)}")没有?=。
分享到:
相关推荐
Java中调用存储过程或存储函数的方法[文].pdf
java调用oracle存储过程或者函数
你还在为如何调用oracle中的存储过程和函数而烦恼吗,请看看该文档。
MySQL实验报告5(存储过程与函数)(1)(1).pdf
适合sqlserver数据库初学者,实验四存储过程和函数实验
JAVA通过MyBatis调用MySql存储过程和函数doc文档合集整理.zip
存储过程、函数、触发器和包
速查java函数 常用函数都有 很方便 对java初学者很有帮助
原创sql存储过程函数范例,一是为了自己方便查找,今天到公司因为没有我保存的一些范例,一个简单的例子写了半个小时,如果有范例直接套几分钟肯定搞定,所以索性上传到CSDN上,何时何地都能找到我的范例了。...
Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作),目前最详细的存储过程文档,不好你举报我。含好多ORACLE SCOTT中emp表的实例。
调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数
常用SQL工具存储过程与函数.rar常用SQL工具存储过程与函数.rar
很清晰的说明了存储过程和函数的区别
Java面试如何用Java实现一个回调函数
数据库存储过程和函数的使用方法 DB txt
NULL 博文链接:https://zhaoshunxin.iteye.com/blog/1310548
java存储过程函数案例.pptjava存储过程函数案例.ppt
实验八 存储过程和函数的使用 实验目的 (1)掌握存储过程的意义 (2)掌握存储过程的使用方法 (3)掌握函数的意义 (4)掌握函数的使用方法
存储过程,oracle写得简单存储过程函数,java环境
讲解了oracle的编程存储过程、函数和包