我需要在数组中添加一个项目,但这根本没有用。
代码:
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并没有在数组中添加任何东西..
P.S。 我已经尝试了很多,请不要讨厌做个新人。刚开始学习plSql。
P.S.S。 如果您不批准我的帖子格式,请提交一个编辑,以便我可以学习该表格。
P.S.S.S 如果您需要一些额外的信息。我很乐意为你添加这个!
谢谢!
答案 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);