I created a object.
CREATE OR REPLACE TYPE o_list AS OBJECT (l_value1 VARCHAR(50),
l_value2 VARCHAR2(50),
l_value3 VARCHAR2(50))
/
I created a table with that object.
CREATE OR REPLACE TYPE l_table AS TABLE of o_list
/
then I'm trying to get values from the user and store it on the table.
DECLARE
list l_table;
limit NUMBER;
table_value1 VARCHAR2(50);
table_value2 VARCHAR2(50);
table_value3 VARCHAR2(50);
BEGIN
limit := &limit;
IF limit > 0 THEN
FOR i IN 1..limit
LOOP
table_value1 := &value1;
table_value2 := &value2;
table_value3 := &value3;
INSERT INTO lIST VALUES (o_list(table_value1,table_value2,table_value3));
END LOOP;
ELSE
DBMS_OUTPUT.PUT_LINE('PLEASE ENTER A VALID LIMIT FOR THE LIST');
END IF;
END;
/
Now I'm getting an error showing that the table or view doesn't exist.
Enter value for limit: 1
old 9: limit := &limit;
new 9: limit := 1;
Enter value for value1: 'a'
old 16: table_value1 := &value1;
new 16: table_value1 := 'aaaaa';
Enter value for value2: 'b'
old 17: table_value2 := &value2;
new 17: table_value2 := 'bbbbbb';
Enter value for value3: 'c'
old 18: table_value3 := &value3;
new 18: table_value3 := 'cccccc';
INSERT INTO lIST VALUES (o_list(table_value1,table_value2,table_value3));
*
ERROR at line 20:
ORA-06550: line 20, column 14:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 20, column 2:
PL/SQL: SQL Statement ignored
"list" is a local PL/SQL table of records( array) rather than a regular SQL table. to create an SQL table :
CREATE TABLE list OF l_table;
Or to keep it 100% PL/SQL:
1- initialize the table of records variable
list l_table := l_table();
2- use extend to extend the list and insert the values
list.extend();
list(list.count) := o_list(table_value1,table_value2,table_value3);
DECLARE
list l_table := l_table();
limit NUMBER;
BEGIN
limit := &limit;
FOR i IN 1..limit LOOP
list.EXTEND;
list( list.COUNT ) := o_list( &value1, &value2, &value3 );
END LOOP;
IF limit < 1 THEN
DBMS_OUTPUT.PUT_LINE('PLEASE ENTER A VALID LIMIT FOR THE LIST');
END IF;
END;
/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.