小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

小助手科技_小程序定制开发图片

数据做为存储过程参数在JAVA中的调用

作者: 梧桐下细语
来源: http://www.l-helper.com
时间: Aug 19, 2020
当前位置:  小助手科技 > 资讯 > 数据做为存储过程参数在JAVA中的调用

--定义数组,该数据不能定义在包中
CREATE OR REPLACE TYPE idArray AS TABLE OF integer;
--包头
CREATE OR REPLACE PACKAGE pg_data_acquire IS
PROCEDURE p_test( ids IN idArray, exist OUT NUMBER);
END pg_data_acquire;

--包体
CREATE OR REPLACE PACKAGE BODY pg_data_acquire IS
PROCEDURE p_test(
 ids IN idArray, 
 exist OUT NUMBER) AS
 v_Index BINARY_INTEGER;
BEGIN
 v_Index:= ids.FIRST;
 LOOP
    dbms_output.put_line(ids(v_Index));
  EXIT WHEN v_Index=ids.LAST;
  v_Index:= ids.NEXT(v_Index);
 END LOOP;
 exist :=v_Index;
END p_test;
END pg_data_acquire;

--JAVA程序调用
 public class TestArrays
{
 public static void main(String[] args)
 {
 
  try {
     Class.forName("oracle.jdbc.driver.OracleDriver");
 
     Connection con = DriverManager.getConnection("jdbc:oracle:thin:@sr0002sz:1521:orcl","ora10g","ora10.g");  
 
     CallableStatement cstmt = con.prepareCall("{ call pg_data_acquire.p_test(?,?) }");
       ArrayDescriptor desc = null;
       ARRAY bookIdArray = null;
       int count = 0;
       String[] bookIds = {"1","2","3"};
       //desc = ArrayDescriptor.createDescriptor("IDARRAY", con);//pg_public.tt_type
        desc = ArrayDescriptor.createDescriptor("PG_PUBLIC.TT_TYPE", con);//pg_public.tt_type
        bookIdArray = new ARRAY(desc, con, bookIds);
 
        cstmt.setObject(1, bookIdArray, oracle.jdbc.OracleTypes.ARRAY);
        cstmt.registerOutParameter(2, OracleTypes.VARCHAR);
        cstmt.execute();
        count = cstmt.getInt(2);
       
        cstmt.close();
       con.close();
    }catch (Exception e){
     System.out.println(e);
    }
 }  
}       


上一篇: C#调用oracle中带数组的存储过程

想了解更多?现在就开始免费体验

请您留言
深圳市小助手科技有限公司
0755-82494862
小助手科技_姓名图片
小助手科技_电话图片
小助手科技_邮箱图片
类型咨询类型
小助手科技_类型图片
180 0250 1799(微信同号)
services@l-helper.com
深圳市福田区泰然八路18号安华工业园6栋705室
QQ交谈 QQ交谈
友情链接:
网站地图
Copyright 2014-2020 深圳市小助手科技有限公司-版权所有
ICP备案号:粤ICP备15072167号-1