Skip to content

Commit 412a13e

Browse files
authored
[PL/SQL] fix varray_type_def according to oracle 21 pl/sql language reference (#3890)
1 parent b8d48a5 commit 412a13e

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

sql/plsql/PlSqlParser.g4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5446,8 +5446,9 @@ table_indexed_by_part
54465446
: (idx1 = INDEXED | idx2 = INDEX) BY type_spec
54475447
;
54485448

5449+
//https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/collection-variable.html#GUID-89A1863C-65A1-40CF-9392-86E9FDC21BE9
54495450
varray_type_def
5450-
: (VARRAY | VARYING ARRAY) '(' expression ')' OF type_spec (NOT NULL_)?
5451+
: (VARRAY | VARYING? ARRAY) '(' expression ')' OF type_spec (NOT NULL_)?
54515452
;
54525453

54535454
// Statements
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
CREATE OR REPLACE PACKAGE TEST_PKG_LXD
2+
AS
3+
-- Package header
4+
5+
PROCEDURE varray_def_test;
6+
7+
END TEST_PKG_LXD;
8+
9+
CREATE OR REPLACE PACKAGE BODY TEST_PKG_LXD
10+
AS
11+
-- Package body
12+
-- This test case passed on 'Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production'
13+
14+
PROCEDURE varray_def_test
15+
IS
16+
-- All of these varray definition are valid
17+
TYPE type_array1 IS VARRAY(5) OF PLS_INTEGER;
18+
TYPE type_array2 IS VARYING ARRAY(5) OF PLS_INTEGER;
19+
TYPE type_array3 IS VARRAY(5) OF PLS_INTEGER;
20+
21+
array1 type_array1;
22+
array2 type_array2;
23+
array3 type_array3;
24+
BEGIN
25+
26+
array1 := type_array1(1);
27+
array2 := type_array2(2);
28+
array3 := type_array3(3);
29+
30+
dbms_output.put_line('v1=' || array1(1) || ', v2=' || array2(1) || ', v3=' || array3(1));
31+
32+
END varray_def_test;
33+
34+
END TEST_PKG_LXD;

0 commit comments

Comments
 (0)