将项添加到数组的Plsql赢了锻炼

时间:2015-11-21 05:08:46

标签: arrays oracle plsql

我需要在数组中添加一个项目,但这根本没有用。

代码:

DECLARE
  ..
  TYPE textGroupArray IS VARRAY(6) OF VARCHAR(4);
  textGroups textGroupArray;
  arrayCount  NUMBER;
  ..
BEGIN
  ..
  textGroups := textGroupArray(10);
  arrayCount  := 0;
  ..
  IF textGroup != 0 THEN
     arrayCount := arrayCount + 1;
     textGroups( arrayCount ) := textGroup;
  END IF;     

对于某些原因我无法理解,Oracle并没有在数组中添加任何东西..

(我得到的错误) enter image description here

P.S。 我已经尝试了很多,请不要讨厌做个新人。刚开始学习plSql。

P.S.S。 如果您不批准我的帖子格式,请提交一个编辑,以便我可以学习该表格。

P.S.S.S 如果您需要一些额外的信息。我很乐意为你添加这个!

谢谢!

Code snippit

1 个答案:

答案 0 :(得分:1)

VARRAY的使用是错误的。

首先尝试像这样更改输出

DBMS_OUTPUT.PUT_LINE( 'textGroup: <'||textGroup||'>' );

Output is

textGroup: < 3536>
textGroup: < 2029>
textGroup: < 2712>
textGroup: < 3456>
textGroup: < 789>
textGroup: <>

所以TYPE textGroupArray IS VARRAY(6) OF VARCHAR(4);是不够的,您应该使用TYPE textGroupArray IS VARRAY(6) OF VARCHAR2(5);或使用textGroups( arrayCount ) := TRIM(textGroup);

注意,建议不要使用数据类型VARCHAR。请改用VARCHAR2

然后textGroups := textGroupArray(10);没有将varray的大小设置为10(无论如何都不可能,因为最大大小只有6)。它将第一个元素设置为“10”。

正确初始化例如:

textGroups := textGroupArray(NULL,NULL,NULL,NULL,NULL,NULL);