oracle(42)_PL/SQL_Java 代码调用存储过程和存储函数
PL/SQL
Java 代码调用存储过程和函数
注意:本节的存储函数和存储过程是上两节已经建好的
Oracle 驱动下载,提取码:k53w 。
注意:版本必须一致,否则无法使用
● 使用 eclipse 新建一个 Java 工程,然后将上面提供的连接数据库 oracle 的驱动文件直接拷贝到 src 下,之后再都添加到构建路径(build path)中,如图:
● 建包建类
● 以上操作完整源码:
package cn.itcast.pro;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
public class TestProFun
{
public static void main(String[] args)
{
testPro();
//testFun();
}
/**
* 存储过程调用
*/
public static void testPro()
{
String driver = "oracle.jdbc.OracleDriver";
String connStr = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = null;
CallableStatement cs = null;
try
{
Class.forName(driver);
conn = DriverManager.getConnection(connStr, "scott", "tiger");
// 获得CallableStatement对象, 调用的sql :{call countysal(?,?)}
cs = conn.prepareCall("{call countysal(?,?)}");
//第一个问号表示输入参数,第二个表示输出参数
cs.setInt(1, 7369);
// 注册Oracle的输出参数的类型
cs.registerOutParameter(2, OracleTypes.NUMBER);
// 执行存储过程
cs.execute();
// 获得返回值
int ysal = cs.getInt(2);
System.out.println(ysal);
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (cs != null)
{
cs.close();
}
if (conn != null)
{
conn.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
/**
* 存储函数调用
*/
public static void testFun()
{
String driver = "oracle.jdbc.OracleDriver";
String connStr = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
Connection conn = null;
CallableStatement cs = null;
try
{
Class.forName(driver);
conn = DriverManager.getConnection(connStr, "scott", "tiger");
// 获得CallableStatement对象, 调用的sql :{? = call countysal(?)}
cs = conn.prepareCall("{? = call countysalf(?)}");
cs.setInt(2, 7369);
// 注册Oracle的输出参数的类型
cs.registerOutParameter(1, OracleTypes.NUMBER);
// 执行存储过程
cs.execute();
// 获得返回值
int ysal = cs.getInt(1);
System.out.println(ysal);
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (cs != null)
{
cs.close();
}
if (conn != null)
{
conn.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
如有错误,欢饮指正!