• oracle学习-存储过程返回一个值,和返回一个结果集


    一、返回一个值

    --创建存储过程
    
    create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is
    begin
    select cname into spname from gb_customerinfo where ccode = spcode;
    end;
    //java代码调用和接受返回值
    
    public static void main(String[] arg) {
       try {     Class.forName("oracle.jdbc.driver.OracleDriver");     Connection cnn = DriverManager.getConnection(
          "jdbc:oracle:thin:@192.168.1.116:1521:cwerp",
          "hu_gbxt", "hu_gbxt");
        //创建CallableStatement
        CallableStatement cs = cnn.prepareCall("{call sp_hu_test(?,?)}");     cs.setString(1, "082");
        cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);     cs.execute();
        String cname = cs.getString(2);
        System.out.println("名字:" + cname);     cs.close();
        cnn.close();
       } catch (Exception e) {
        e.printStackTrace();
       }
    
    }
    }

    二、返回多个值

    --创建一个包,包里有个游标变量
    
    create or replace package mypackage as
    type sp_cursor is ref cursor;
    end mypackage;
    
    --创建存储过程
    create or replace procedure sp_proc(carcode in varchar2,sp_coesor out mypackage.sp_cursor)is
    begin
    open sp_coesor for select * from gb_truck where cardcode = carcode;
    end;
    //注解,这里面的输出参数是个游标类型
    
    //java调用存储过程
    
    public static void main(String[] arg) {
       try {     Class.forName("oracle.jdbc.driver.OracleDriver");     Connection cnn = DriverManager.getConnection(
          "jdbc:oracle:thin:@192.168.1.116:1521:cwerp",
          "hu_gbxt", "hu_gbxt");
        //创建CallableStatement
          CallableStatement cs = cnn.prepareCall("{call sp_proc(?,?)}");
        cs.setString(1, "皖1958707");
        cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
        cs.execute();
        ResultSet rs = (ResultSet)cs.getObject(2);
        while(rs.next()){
         System.out.println(rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(4));     //关闭
        cs.close();
        cnn.close();
       } catch (Exception e) {
        e.printStackTrace();
       }
    
    }
    }
  • 相关阅读:
    通过AEC解读WF的核心原理(三)Execute方法Activity的入口
    LINQ解 爱因斯坦迷题
    通过AEC解读WF的核心原理(一)Activity的副本
    动态表单
    通过AEC解读WF的核心原理(九)实现IEventActivity
    WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
    通过AEC解读WF的核心原理(六)创建复本ForEach循环
    WF的异常捕获与资源补偿
    WF资料打包下载
    NET下的流程图开发包介绍
  • 原文地址:https://www.cnblogs.com/gavenQin/p/5583847.html
Copyright © 2020-2023  润新知