java 调用oracle 存储过程

package net.e_lian.bpm.core.DataBaseConnection;


import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Types;


import oracle.jdbc.OracleCallableStatement;


/***

*调用方法格式为userdProcedure("call kqdelete(?)",docId);

 * @see 调用Oracle 的存储过程
 * @param 脚本调用时传的参数
 *            procedureName 存储过程名称
 */
public class DataBaseProcedure {
DataBaseConnection dataConn = new DataBaseConnection();
Connection conn = null;
Statement statement = null;
ResultSet rs = null;
OracleCallableStatement cstmt = null;


/***
* @see 调用不带参数的存储过程
* @param procedureName
*            存储过程名
 
*/
public void userdProcedure(String procedureName) {
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
// cstmt.setString(0, val);
cstmt.execute();
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
}


/***
* @see 调用带参数的存储过程
* @param procedureName
*            存储过程名
* @param val
*            存储过程参数
*/
public void userdProcedure(String procedureName, String val) {
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, val);
cstmt.execute();
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
}



/***
* @see 调用带参数,有返回值的存储过程
* @param procedureName
*            存储过程名
* @return String "1,1"           
*/
public String ProcedureReturn(String procedureName, String val) {
String returnVal ="";//返回参数
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, val);
cstmt.registerOutParameter(2, Types.VARCHAR);  
cstmt.executeUpdate();
   returnVal = cstmt.getString(2);  
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
return returnVal;
}

/***
* @see 调用带参数的存储过程
* @param procedureName
*            存储过程名
* @param applicationid
*            1.软件ID
* @param domainid
*           2. 模块ID
* @param formid
*            3.数据表单ID
* @param formname
*            4.数据表单名
* @param author
*            5.当前作者
* @param coding
*            6.编码标识
*            
*/
public void userdProcedure(String procedureName, String applicationid,
String domainid, String formid, String formname, String author,
String coding) {
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, applicationid);
cstmt.setString(2, domainid);
cstmt.setString(3, formid);
cstmt.setString(4, formname);
cstmt.setString(5, author);
cstmt.setString(6, coding);
cstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
}


/***
* @see 调用带参数,有返回值的存储过程
* @param procedureName
*            存储过程名
* @param applicationid
*            1.软件ID
* @param domainid
*           2. 模块ID
* @param formid
*            3.数据表单ID
* @param formname
*            4.数据表单名
* @param author
*            5.当前作者
* @param coding
*            6.编码标识
* @return String "1,1"           
*/
public String ProcedureReturn(String procedureName, String applicationid,
String domainid, String formid, String formname, String author,
String coding) {
String returnVal ="";//返回参数
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, applicationid);
cstmt.setString(2, domainid);
cstmt.setString(3, formid);
cstmt.setString(4, formname);
cstmt.setString(5, author);
cstmt.setString(6, coding);
cstmt.registerOutParameter(7, Types.VARCHAR);  
cstmt.executeUpdate();
   returnVal = cstmt.getString(7);  


} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
return returnVal;
}
/***
* @see 调用带参数的存储过程
* @param procedureName
*            存储过程名
* @param applicationid
*            1.软件ID
* @param domainid
*           2. 模块ID
* @param formid
*            3.数据表单ID
* @param formname
*            4.数据表单名
* @param author
*            5.当前作者
* @param created
*            6.创建日期
* @param coding
*            7.编码标识
*            
*/
public void userdProcedure(String procedureName, String applicationid,
String domainid, String formid, String formname, String author, Date created,
String coding) {
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, applicationid);
cstmt.setString(2, domainid);
cstmt.setString(3, formid);
cstmt.setString(4, formname);
cstmt.setString(5, author);
cstmt.setDate(6, created);
cstmt.setString(7, coding);
cstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
}
/***
* @see 调用带参数的,且有返回值(返回一个字符串)存储过程
* @param procedureName
*            存储过程名
* @param applicationid
*            1.软件ID
* @param domainid
*           2. 模块ID
* @param formid
*            3.数据表单ID
* @param formname
*            4.数据表单名
* @param author
*            5.当前作者
* @param created
*            6.创建日期
* @param coding
*            7.编码标识
* @return String "0,0"
*            
*/
public String ProcedureReturn(String procedureName, String applicationid,
String domainid, String formid, String formname, String author,Date created,
String coding) {
String returnVal ="";//返回参数
try {
conn = DataBaseConnection.getConnection();
statement = conn.createStatement();
// 调用
cstmt = (OracleCallableStatement) conn.prepareCall(procedureName);
cstmt.setString(1, applicationid);
cstmt.setString(2, domainid);
cstmt.setString(3, formid);
cstmt.setString(4, formname);
cstmt.setString(5, author);
cstmt.setString(6, coding);
cstmt.registerOutParameter(8, Types.VARCHAR);  
cstmt.executeUpdate();
   returnVal = cstmt.getString(8);  


} catch (Exception e) {
e.printStackTrace();
e.getMessage();
} finally {
dataConn.CloseConnection();
}
return returnVal;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值