17,377
社区成员
发帖
与我相关
我的任务
分享
--可以的:
declare
begin
execute immediate 'create type emp_type as object(name varchar2(10),salary number(6,2),hiredate date)';
execute immediate 'create type emp_array as table of emp_type';
execute immediate 'create table department(deptno number(2),dname varchar2(10),employee emp_array) nested table employee store as employee';
end;
PL/SQL procedure successfully completed
SQL> select * from department;
DEPTNO DNAME NAME SALARY HIREDATE
------ ---------- ---------- -------- -----------
SQL>
--LZ:必须create后才能引用:
SQL>
SQL> declare
2
3 begin
4
5 execute immediate 'create type emp_type2 as object(name varchar2(10),salary number(6,2),hiredate date)';
6 execute immediate 'create type emp_array2 as table of emp_type2';
7 execute immediate 'create table department2(deptno number(2),dname varchar2(10),employee emp_array2) nested table employee store as employee2';
8 end;
9 /
PL/SQL procedure successfully completed
SQL> select * from department2;
DEPTNO DNAME EMPLOYEE
------ ---------- --------
SQL>
SQL>
SQL> declare
2
3 begin
4 execute immediate 'create table department(deptno number(2),dname varchar2(10),name varchar2(10),salary number(6,2),hiredate date) ';
5 end;
6 /
PL/SQL procedure successfully completed
SQL>
--上面是可以的,但嵌套表还没有试出来。
declare
type emp_type is object(
name varchar2(10),salary number(6,2),
hiredate date);
type emp_array is table of emp_type;
begin
execute immediate 'create table department(
deptno number(2),dname varchar2(10),
employee emp_array)
nested table employee store as employee';
end;
/