Home » SQL & PL/SQL » SQL & PL/SQL » PL/SQL table :: ORA-00902: invalid datatype (Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production)
PL/SQL table :: ORA-00902: invalid datatype [message #659374] |
Fri, 13 January 2017 11:38  |
 |
abhi_orcl
Messages: 40 Registered: December 2016
|
Member |
|
|
Hi All,
I am trying to test the feature in 12c wherein we can use table operator in locally defined PL/SQL types.
Below is the code:
create table test_a(a number,b number)
/
create table test_b(a number,b number)
/
insert into test_a
select 1,1 from dual connect by level <=1000
/
commit
/
CREATE OR REPLACE PACKAGE test_api AS
TYPE t_row IS table of test_a%rowtype;
PROCEDURE test1;
END;
/
CREATE OR REPLACE PACKAGE BODY test_api AS
PROCEDURE test1 IS
l_tab1 t_row;
v_err varchar2(500);
v_err1 varchar2(500);
BEGIN
SELECT *
BULK COLLECT INTO l_tab1
FROM test_a;
insert into test_b
SELECT * FROM TABLE(l_tab1);
commit;
exception
when others then
v_err := SQLCODE;
v_err1 := SQLERRM;
dbms_output.put_line(v_err||'::-'||v_err1);
END;
END;
/
But when I am running it I am getting below error:
SET SERVEROUTPUT ON
EXEC test_api.test1;
anonymous block completed
-902::-ORA-00902: invalid datatype
Can someone advise whats wrong here??
Thanks
|
|
|
|
|
|
|
Re: PL/SQL table :: ORA-00902: invalid datatype [message #659386 is a reply to message #659380] |
Fri, 13 January 2017 18:36   |
 |
Barbara Boehmer
Messages: 9105 Registered: November 2002 Location: California, USA
|
Senior Member |
|
|
SCOTT@orcl_12.1.0.2.0> CREATE TABLE test_a (a NUMBER, b NUMBER)
2 /
Table created.
SCOTT@orcl_12.1.0.2.0> CREATE TABLE test_b (a NUMBER, b NUMBER)
2 /
Table created.
SCOTT@orcl_12.1.0.2.0> INSERT INTO test_a SELECT 1, 1 FROM DUAL CONNECT BY LEVEL <= 10
2 /
10 rows created.
SCOTT@orcl_12.1.0.2.0> CREATE OR REPLACE PACKAGE test_api
2 AS
3 TYPE t_row IS TABLE OF test_a%ROWTYPE;
4 PROCEDURE test1;
5 END test_api;
6 /
Package created.
SCOTT@orcl_12.1.0.2.0> SHOW ERRORS
No errors.
SCOTT@orcl_12.1.0.2.0> CREATE OR REPLACE PACKAGE BODY test_api
2 AS
3 PROCEDURE test1
4 IS
5 l_tab1 t_row;
6 BEGIN
7 SELECT * BULK COLLECT INTO l_tab1 FROM test_a;
8 FORALL i IN 1 .. l_tab1.COUNT
9 INSERT INTO test_b VALUES l_tab1(i);
10 END test1;
11 END test_api;
12 /
Package body created.
SCOTT@orcl_12.1.0.2.0> SHOW ERRORS
No errors.
SCOTT@orcl_12.1.0.2.0> EXEC test_api.test1
PL/SQL procedure successfully completed.
SCOTT@orcl_12.1.0.2.0> SELECT * FROM test_b
2 /
A B
---------- ----------
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
10 rows selected.
[Updated on: Fri, 13 January 2017 18:47] Report message to a moderator
|
|
|
|
|
|
|
|
Goto Forum:
Current Time: Sat May 24 16:33:50 CDT 2025
|