oracle存储过程中如何使用数组

如题所述

首先你需要定义一个数组类型,然后定义这个数组变量
declare
type a_type is table of number;
-- type a_type is array(10) of number;
-- 下面一种定义方式则指定了该数组的最大元素个数

a a_type := a_type(); -- 定义并初始化一个数组变量
begin
a.extend(3); -- 数组扩展到3个元素
a(1) := 1;
a(2) := 10;
a(3) := 100;
end;

另外数组还有一下方法和属性
first -- 第一个元素下标
last -- 最后一个元素下标
count -- 数组元素个数
prior(n) -- 下标 n 的前一个元素下标
next(n) -- 下标 n 后一个元素下标
extend(n) -- 添加 n 个数组元素,不带参数添加一个数组元素
delete(n) -- 删除数组中下标为 n 的元素,不带参数删除整个数组元素
温馨提示:内容为网友见解,仅供参考
无其他回答

oracle 存储过程,如何传入一个数组
这个是不行的,数组内容必须首先在存储过程里定义好数组类型,然后给予定义好的数据类型定义数组型变量。存储过程的入参是做不到的。一般情况下,采用字符串的方式,并给每项用特定的分隔符的方式传入,然后在存储过程中按照分隔符解析出每一项,插到存储过程的定义的数组的每一项上去。

oracle中的存储过程可以用数组吗
可以啊。--数组的应用DECLARE TYPE TYPE_TAB IS TABLE OF VARCHAR(10) INDEX BY BINARY_INTEGER; MYARR TYPE_TAB; BEGIN FOR INX IN 1..3 LOOP SELECT COL_TWO INTO MYARR(INX-1) FROM TAB_TEST WHERE COL_ONE = INX; DBMS_OUTPUT.PUT_LINE(MYARR(INX-1)); END LO...

oracle中要怎么使用数组
A intarray;TYPE T_EMP IS TABLE OF EMP%ROWTYPE INDEX BY BINARY_INTEGER;A_EMP T_EMP;I BINARY_INTEGER := 0;FOR REC IN (SELECT EMPNO,ENAME FROM EMP) LOOP I := I + 1;A_EMP(I).EMPNO := REC.EMPNO;END LOOP;l:= A_EMP.first;--使用first方法 loop exit when l is ...

oracle 存储过程 数组循环
type typ_tab is table of typ_rec index by binary_integer; --以集合变量为单位的table数组 rec_sql typ_rec;another_rec student%rowtype; --跟rec_sql一样 begin --for循环里的rec_tmp不用定义,可以自动生成的 for rec_tmp in (select t.name, t.age from student t) loop dbms_...

oracle测试存储过程传入数组怎么传
在存储过程中使用自定义类型NESTEDARRAY。PROCEDURE GET_ARR_RESULT(INPUTARRAY IN NESTEDARRAY, AR OUT NESTEDARRAY) IS BEGIN AR := NESTEDARRAY();FOR I IN 1 .. INPUTARRAY.COUNT LOOP AR.EXTEND;AR(I) := I|| INPUTARRAY(I);END LOOP;END GET_ARR_RESULT;Java代码:import java.sql....

java字符串数组作为参数传递oracle存储过程
建议你用字符串的方式存储数组,假如你有3个id的list分别为1,2,3,你可以传1,2,3这样的字符串给存储过程然后在存储过程里面再切割写逻辑。只在数据库里面用其定义的数组传递参数,没有用java传数组值,楼主若找到办法了,也请告知一声。

oracle中存储过程传入参数是一个int型,如何将其+1,然后在后面的操作中...
直接在代码中用啊,比如参数名为p_value,在你的代码中用p_value+1就行了,不管是条件比较的IF xxx=p_value+1,或者是给其它变量赋值xxx:=p_value+1,再或者插入数据时的insert into test(...) values(p_value+1,...)都可以。嫌麻烦的话,就声明一个本地变量,l_value number := p_...

java字符串数组作为参数传递oracle存储过程
用字符串传。先组成一个字符串,比如多个值之间用逗号分隔开,传进去之后再按照分隔符分成数组,应该是一个办法。

oracle存储过程中使用变长一维数组
DECLARE TYPE T_VARRY IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;V_VAR1 T_VARRY;BEGIN FOR I IN 1 .. 3 LOOP V_VAR1(I) := 'this is ' || I || ';';END LOOP;FOR I IN 1 .. V_VAR1.COUNT LOOP DBMS_OUTPUT.PUT_LINE(V_VAR1(I));END LOOP;END;...

oracle存储过程执行带参数的字符串数组问题?
oracle的基本数据类型中没有数组类型,参数最好不要设置成数组,转换成字符串处理(varchar2更好),因为在存储过程里面,对于数组遍历oracle好像也没提供方法,也就是说你在里面还是得对数据做处理。

相似回答