在创建或PL模拟二维数组/ SQL [英] Creating or simulating two dimensional arrays in PL/SQL
本文介绍了在创建或PL模拟二维数组/ SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
能否请你帮我,我怎么可以创建PL / SQL二维数组存储过程?列是动态的,因此它可以成长和类型也随之变化。
任何帮助是AP preciated。谢谢你在前进!
我有以下的code:
键入CAR_TABLE_ARRAY是VARRAY(2)的VARCHAR2(255);
TYPE CAR_TABLE_TYPE IS CAR_TABLE_ARRAY表;
CAR_TABLE CAR_TABLE_TYPE;CAR_TABLE:= CAR_TABLE_TYPE();
CAR_TABLE.EXTEND(10);
CAR_TABLE(1)(1):='道奇';
CAR_TABLE(2)(1):='福特';
CAR_TABLE(3)(1):='野马';
CAR_TABLE(4)(1):='EDSEL';
CAR_TABLE(5)(1):='斯图特贝克';DBMS_OUTPUT.PUT_LINE('1'|| CAR_TABLE(1)(1));
DBMS_OUTPUT.PUT_LINE('2'|| CAR_TABLE(2)(1));
DBMS_OUTPUT.PUT_LINE('3'|| CAR_TABLE(3)(1));
DBMS_OUTPUT.PUT_LINE('4'|| CAR_TABLE(4)(1));
DBMS_OUTPUT.PUT_LINE('5'|| CAR_TABLE(5)(1));
当我跑我得到以下错误:
ORA-06531:引用未初始化的收集
块引用>解决方案下面是在PL / SQL使用多维数组的一个例子。这里我使用包含数组的数组。
申报 类型t_features是PLS_INTEGER为varchar(100)指数表;
类型t_car_rec是记录
(
使VARCHAR2(50)
模型VARCHAR2(50)
功能t_features
); 类型t_car_tab是PLS_INTEGER t_car_rec指数表;
car_tab t_car_tab; 程序show_detail是
car_idx PLS_INTEGER;
features_idx PLS_INTEGER;
开始
car_idx:= car_tab.first;
循环
当car_idx为空退出;
DBMS_OUTPUT.PUT_LINE('的详细信息'|| car_tab(car_idx)。使||''|| car_tab(car_idx).MODEL); features_idx:= car_tab(car_idx).features.first;
循环
当features_idx为空退出;
DBMS_OUTPUT.PUT_LINE('=>'|| car_tab(car_idx)。特点(features_idx)); features_idx:= car_tab(car_idx).features.next(features_idx);
结束循环; car_idx:= car_tab.next(car_idx);
结束循环;
结束;开始 - 使用顺序索引值
car_tab(1)。使:='法拉利';
car_tab(1)。模型:='特斯坦罗萨';
car_tab(1)。特点(1):='快';
car_tab(1)。特点(2):='看起来很酷;
car_tab(1)。特点(3):='昂贵'; - 使用随机指标值(疏)
car_tab(2)。使:='极品';
car_tab(2).MODEL:='TSX';
car_tab(2)■特征(14):='小';
car_tab(2)。特点(200):='好省油;
car_tab(2)■特征(36):='便宜'; show_detail;结束;输出是:
法拉利特斯坦罗萨详情
= GT;快速
= GT;看起来很酷
= GT;贵
讴歌TSX详情
= GT;小
= GT;价格低廉
= GT;良好MPG希望帮助
Can you please help me how can I create two dimensional array in PL/SQL for Stored Procedure? The columns are dynamic so it can grow and change in types also. Any help is appreciated. Thank you in advance!
I have the following code:
Type CAR_TABLE_ARRAY is varray(2) of varchar2(255); TYPE CAR_TABLE_TYPE IS TABLE OF CAR_TABLE_ARRAY; CAR_TABLE CAR_TABLE_TYPE; CAR_TABLE := CAR_TABLE_TYPE(); CAR_TABLE.EXTEND(10); CAR_TABLE(1)(1) := 'DODGE'; CAR_TABLE(2)(1) := 'FORD'; CAR_TABLE(3)(1) := 'MUSTANG'; CAR_TABLE(4)(1) := 'EDSEL'; CAR_TABLE(5)(1) := 'STUDEBAKER'; DBMS_OUTPUT.put_line( '1 ' || CAR_TABLE(1)(1) ); DBMS_OUTPUT.put_line( '2 ' || CAR_TABLE(2)(1) ); DBMS_OUTPUT.put_line( '3 ' || CAR_TABLE(3)(1) ); DBMS_OUTPUT.put_line( '4 ' || CAR_TABLE(4)(1) ); DBMS_OUTPUT.put_line( '5 ' || CAR_TABLE(5)(1) );
When I run I get the following error:
ORA-06531: Reference to uninitialized collection
解决方案Here's an example of using an multidimensional array in pl/sql. Here I use an array containing an array.
declare type t_features is table of varchar(100) index by pls_integer; type t_car_rec is record ( make varchar2(50), model varchar2(50), features t_features ); type t_car_tab is table of t_car_rec index by pls_integer; car_tab t_car_tab; procedure show_detail is car_idx pls_integer; features_idx pls_integer; begin car_idx := car_tab.first; loop exit when car_idx is null; dbms_output.put_line('Details for ' || car_tab(car_idx).make || ' ' || car_tab(car_idx).model); features_idx := car_tab(car_idx).features.first; loop exit when features_idx is null; dbms_output.put_line(' =>' || car_tab(car_idx).features(features_idx)); features_idx := car_tab(car_idx).features.next(features_idx); end loop; car_idx := car_tab.next(car_idx); end loop; end; begin -- using sequential index values car_tab(1).make := 'Ferrari'; car_tab(1).model := 'Testarossa'; car_tab(1).features(1) := 'Fast'; car_tab(1).features(2) := 'Looks cool'; car_tab(1).features(3) := 'Expensive'; -- using random index values (sparse) car_tab(2).make := 'Acura'; car_tab(2).model := 'TSX'; car_tab(2).features(14) := 'Small'; car_tab(2).features(200) := 'Good MPG'; car_tab(2).features(36) := 'Inexpensive'; show_detail; end;
Output would be:
Details for Ferrari Testarossa =>Fast =>Looks cool =>Expensive Details for Acura TSX =>Small =>Inexpensive =>Good MPG
Hope that helps
这篇关于在创建或PL模拟二维数组/ SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文