0%

JDBC调用存储过程和函数

2017年9月5日 上午8:40

CallableStatement pc = conn.prepareCall("{?= call fun_getInfo(?)}");
参考CallableStatement_百度百科
摘抄:
1. 这种调用是 用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数
2. 其他仔细的看看这个链接就行了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.shanxi.weixin;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.Properties;

public class JDBCDemo6 {

public static void main(String[] args) {

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.42.43:1521:orcl","gao", "gao");
//操作数据库调用函数或存储过程需要另一个操作数据库的对象CallableStatement
CallableStatement pc = conn.prepareCall("{?= call fun_getInfo(?)}");
// 注册返回值的类型
pc.registerOutParameter(1,Types.VARCHAR);
// 设置函数/存储过程的参数列表 in in out out
pc.setInt(2,10);
//调用对应的函数/存储过程
pc.execute();
//接受返回值
String name = pc.getString(1);
System.out.println(name);
if(conn!=null){
conn.close();
}

}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
}