oracle 数组,oracle
定义一个长度为5的字符串数组
type str_array is varray(5) of varchar2(30);
v_str_array str_array := expr_key_array('aa','bb','cc','dd','ee');
for i in 1 .. v_str_array .count loop
dbms_output.put_line(v_expr_key);
end loop;
定义个变长字符串数组
type str_array is table of varchar2(20) index by binary_integer; v_str_array str_array ;v_str_array(1) :='aa';
v_str_array(2) :='bb';
v_str_array(3) :='cc';
declare
type array_type is array(5) of number(2);
a array_type := array_type(5,5,5,5,5);
begin
for i in 1..a.count loop
DBMS_OUTPUT.PUT_LINE(a(i));
end loop;
end;
/
记住,你的数组最大长度是5,我给你初始化了5个数据。如果我给你初始3个数据,那么你的数组实际长度就是3,如果你a(4)就会数组越界,下面是一种扩展数组的方法:
declare type array_type is array(5) of number(2);
a array_type := array_type();
begin
for i in 1..5 loop
a.extend;
a(i) := i;
end loop;
for i in 1..a.count loop DBMS_OUTPUT.PUT_LINE(a(i));
end loop;
end;
/
当然你也可以用 a.extend(5) 直接扩展5个(这个扩展长度不能大于5哦)
你有个地方理解错了type a is array(5) of number(2);这句只是声明了一个数据类型(数组类型)
此时你的a和number(2)是一个意思
a array_type := array_type(5,5,5,5,5);这个才是定义一个数组变量a
给你个思路,把数组写在程序里(也就是你用的VB.NET),在程序里拼sql语句,然后使用ADO.NET,拿到符合条件的数据集合。
下面是伪代码
string[] Conditions=new stringp[]{"aa","bb","cc"};//存放where条件到数组
for(int i=0;i<Conditions.Length;i++)//遍历你的条件数组
{
string sql="select * from 表名 where 条件="+Conditions[i];//拼sql语句
OracelDataReader reader=cmd.ExecuteQuery(sql); //借助ADO.NET ,得到你需要的数据集合
}