平台中调用oracle 的存储过程procedure实例解析

平台使用oracle,与oracle所有操作通过调用存储过程实现. 使用Spring的调用存储过程技术,用到spring.jar包中类为

 

StoreProcedure , SqlOutParameter, SqlParameter和jdk的DataSource;

 

import javax.sql.DataSource;	jdk自带接口
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure; 

1.  java代码调用步骤分析

(1)声明连个List, 存放oracle中函数的输入和输出参数

List inParamsDesc = new Vector();

 List outParamsDesc = new Vector();

(2) 把函数参数以对象数组的形式分别放入List中 ,

 

        inParamsDesc.add(new Object[] { "LOGIN_NAME", new Integer(OracleTypes.VARCHAR) });
        inParamsDesc.add(new Object[] { "PASSWORD", new Integer(OracleTypes.VARCHAR) });
  outParamsDesc.add(new Object[] { "vUserID",  new Integer(OracleTypes.INTEGER) });

 

 (3).把参数值以K-V形式放入 Map对象中

 

        Encryption encryptor = new Encryption(ParamNames.APP_CODE,
                ParamNames.APP_SERIAL_NO, loginId, password);

 Map inParams = new HashMap();
inParams.put("LOGINNAME",loginid);
inParams.put("PASSWORD",password);
 

 

(4)创建StoredProcedureCall(自定义对spring连接oracle的封转类) 对象,构造方法,分别为 数据源 ,所调用给的函数名,

true表示此存数过程为函数function

 

StoredProcedureCall procCall = new StoredProcedureCall(dataSource,"UserPkg.isUser", true);

 

(5)调用声明输入输出参数

  procCall.declareParameters(inParamsDesc, outParamsDesc);

 

(6)执行存储过程,返回结果用map接收, 参数为map对象

 

 Map outParams = procCall.executeProcedure(inParams);

 (7)处理结果:

 

Integer userId = (Integer) outParams.get("vUserID");
 

 

2. 常见的基本数据类型 java<->oracle转化:

 

int =>public static final int INTEGER = 4;

String = >  public static final int VARCHAR = 12;

double =>  public static final int DOUBLE = 8;

 

 

 

 

你可能感兴趣的:(spring,jdk,oracle,sql,jdbc)