存储过程中定义参数类型为数组

存储过程

Procedure Update_Batch_Id(p_entity_id in Number,
                            p_vdr_id    In fnd_table_of_number) is
  begin

    For i In 1 .. p_vdr_id.COUNT Loop
      update cux_table_header cvs
         set cvs.attribute10 = p_entity_id
       where cvs.header_id = p_vdr_id(i);
    End Loop;
  end;

JAVA中调用

List list = new ArrayList();
...
list.add(row.getHeaderId());
...

OracleCallableStatement statement = null;
OracleConnection oracleConnection = (OracleConnection)tsn.getJdbcConnection();

int size = list.size();

if (size>0)
        {
           Number[] vdrIdArray = (Number[])list.toArray(new Number[size]);
            ARRAY vdrArray=null;
try {
                          ArrayDescriptor tableOfNumber =
                              oracle.sql.ArrayDescriptor.createDescriptor("FND_TABLE_OF_NUMBER",
                                                                          oracleConnection);
                         vdrArray = new ARRAY(tableOfNumber, oracleConnection, vdrIdArray);
                       String sql =
                           "BEGIN cux_XXXXXXX_pkg.Update_Batch_Id(:1,:2);end;";
                       statement = (OracleCallableStatement)oracleConnection.prepareCall(sql);

                       statement.setObject(1, batchid);
                       statement.setARRAY(2, vdrArray);
                       statement.execute();
                      }catch (Exception ex) {
                               String[][] stra2 = { { "123456wewee", ex.getMessage() }, };
                               LogUtil.of(stra2, this).print(pageContext);
                            ex.printStackTrace();
                            System.out.println(ex.getMessage());
                           }
}                      
时间: 2024-08-04 08:20:47

存储过程中定义参数类型为数组的相关文章

C++_第七章函数的基本知识_求阶乘的子函数_ 函数参数类型为数组_ 求数组内所有元素和、部分元素和的方法_实现了先从键盘输入到一个数组中,再用for循环取读出数组中的元素 for循环也可以用break来结束循环的

/* 第七章函数的基本知识 */ /*01)c++对于返回值有一定的限制:可以是常量.变量.指针.结构对象或表达式,但不可以是数组02)c++返回数组的方法:将数组作为结构会对象组成部分来返回03)函数遇到return则结束该函数04)如果一个函数的两房额参数类型相同,则必须分别制定每个参数的类型,而不能像声明常规变量那样,将声明组合在一起05)*/ //本代码注意double类型的写法以及double和int类型数据的转换 1 #include <iostream> 2 3 void che

SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?

本文出处:http://www.cnblogs.com/wy123/p/6704619.html 问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表,有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没有这个习惯,对于不明真相的群众或者喜欢思考的人会问,存储过程中定义的临时表,最后要不要主动删除,为什么?或者说是不是存储过程结束的时候删除临时表更加规范?不止一个人问过这个问题了,说实在话,本人之前确实不清楚,只

Scala中的参数类型和延迟类型定义

在Scala中,有两种方式可以用来支撑高阶对象. 1. 类型参数: trait DataOps[A] { def show(a: A) = println(a) } val numbericOps = new DataOps[Int]{} 特质上有一个泛型A,当实例化类型的时候可以填入 2. 延迟定义到子类 trait DataOps { type A def show(a: A) = println(a) } val numbericOps = new DataOps { override t

Swift中关于任意类型的数组

在Objc中你是不可以把一个非对象类型放入数组的,你必须将其"封箱",然后再放入数组. 在Swift中你可将非对象类型轻松放入数组: let ary = [1,2,3] 你可以明确指定元素类型: let ary:[Int] = [1,2,3] 不过你不可以在一个数组中包括不同类型的元素,除非你使用AnyObject类型: class Foo{ } let ary:[AnyObject] = [1,"String",Foo(),12.22] 不过现在问题又来了,如果我

python函数中的参数类型

python函数中的参数 python的函数类型详解

存储过程中使用参数和变量作为查询条件对性能的影响?

今日匆忙中写了2各存储过程,查询的表,查询的结构,返回的值基本一样,就是对参数的使用有点不同. 晚上到家想着优化下,看看能不能合并了.在几次重写后,拿着几个版本查看执行计划时,发现个以前没注意的问题. 第一个SP传入的2个时间参数直接用于里面的查询条件. 第二个SP传入的2个时间参数,在SP内又定义了2个时间变量,将参数通过简单计算后Set给了2个变量,然后在查询中使用这2个变量作为条件. 这2个SP,在执行开销上相差数倍. 在外面套一层SP,把时间算好了再当参数传给第二个SP,修改SP直接使用

自定义struts2中action参数类型转换器

DateAction.java中代码如下: package com.itheima.action; import java.util.Date; public class DateAction { private Date time; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public String execute() { return "succes

mysql存储过程中字符串参数单引号

注意:存储过程中单引号  ,四个单引号 SET @sql = CONCAT('select user_id into ',m_user_id,' from go_user where mobile =','''',p_user_name,'''',' AND password=','''',p_password,'''');

在之前的EventHandler中的参数类型必须继承EventArgs,现在已经去掉这个约束了。

分别是vs2008和vs2012的对比,可以看到2012已经去掉了约束条件.