最近为公司项目数据库通过存储过程做归档,需要用到自定义数组
百度结果中很多写的都不是很清晰,可变长数组定义好后,如何使用。
在此做个记录:
定义:
type id_array is table of number(15) index by binary_integer;
acb_ids id_array;
这个定义方式适用在package,如果是纯粹在存储过程中自定义类型请百度 。
使用:
acb_ids(acb_ids.count+1) := c_account_books_cbs_rec.acb_id;
网上很多实例是这样的:acb_ids(acb_ids.count) := c_account_books_cbs_rec.acb_id;这样写是没有用的,因为这个时候acb_ids是空的,那么acb_ids.count也是无效的,acb_ids在使用时回会报"未找到任何数据",因此需要acb_ids.count+1。
c_account_books_cbs_rec为游标遍历中的一个对象,上述代码意思是将游标数据中每行记录的ID放到自定义数组中,方便存储过程的值返回或者游标遍历外程序体中使用。
for x in 1 .. acb_ids.count loop
do something;
end loop;