趣味SQL――创建指定的数据类型(一)

2015-07-21 16:27:32 · 作者: · 浏览: 22

趣味SQL——创建指定的数据类型

在一篇文章上看到“提出过可以创建指定的数据类型”,于是想尝试着创建一下看看。

但是没有按预想的那样成功~~

?

\

create type MyName as object (first varchar2(20),second varchar2(20) );

?

create table newtype_test(

ID varchar2(32),

newname MyName

);

?

看一下创建的表结构:有两个列!

\

在查询数据看看效果:有三个列!

select * from newtype_test;

?

\

?

下面就是实验插入数据看看了,以命令行的方式插入,不成功,几次尝试如下:

SQL> insert into newtype_test(id,newname.first,newname.second) values(2,'shen','lan');

insert into newtype_test(id,newname.first,newname.second) values(2,'shen','lan')

ORA-00904: "NEWNAME"."SECOND":标识符无效

SQL> insert into newtype_test(id,newname.first,newname.second) values(2,shen,lan);

insert into newtype_test(id,newname.first,newname.second) values(2,shen,lan)

ORA-00984:列在此处不允许

SQL> insert into newtype_test(id,newname.first,newname.second) values(2,(shen),(lan));

insert into newtype_test(id,newname.first,newname.second) values(2,(shen),(lan))

ORA-00984:列在此处不允许

SQL> insert into newtype_test(id,newname) values(2,'shenlan');

insert into newtype_test(id,newname) values(2,'shenlan')

ORA-00932:数据类型不一致:应为 HYL.MYNAME,但却获得 CHAR

SQL> insert into newtype_test(id,newname) values(2,shenlan);

insert into newtype_test(id,newname) values(2,shenlan)

ORA-00984:列在此处不允许

SQL> insert into newtype_test(id,newname) values(2,(shen,lan));

insert into newtype_test(id,newname) values(2,(shen,lan))

ORA-00907:缺失右括号

SQL> insert into newtype_test(id,newname) values(2,(shen),(lan));

insert into newtype_test(id,newname) values(2,(shen),(lan))

ORA-00913:值过多

SQL> insert into newtype_test(id,newname) values(2,(shen));

insert into newtype_test(id,newname) values(2,(shen))

ORA-00984:列在此处不允许

SQL> insert into newtype_test(id,newname(first,second)) values(2,('shen','lan'));

insert into newtype_test(id,newname(first,second)) values(2,('shen','lan'))

ORA-00917:缺失逗号

SQL> insert into newtype_test(id,newname,(first,second)) values(2,('shen','lan'));

insert into newtype_test(id,newname,(first,second)) values(2,('shen','lan'))

ORA-01747: user.table.column, table.column或列说明无效

SQL> insert into newtype_test(id,newname.(first,second)) values(2,('shen','lan'));

insert into newtype_test(id,newname.(first,second)) values(2,('shen','lan'))

ORA-01747: user.table.column, table.column或列说明无效

SQL> insert into newtype_test.newname.first values('shen');

insert into newtype_test.newname.first values('shen')

ORA-00926:缺失 VALUES关键字

SQL> insert into newtype_test.newname values (shen);

insert into newtype_test.newname values (shen)

ORA-00942:表或视图不存在

SQL> insert into newtype_test.newname values (shen,lan);

insert into newtype_test.newname values (shen,lan)

ORA-00942:表或视图不存在

SQL> insert into newtype_test.newname(first,second) values(shen,lan);

insert into newtype_test.newname(first,second) values(shen,lan)

ORA-00942:表或视图不存在

SQL> insert into newtype_test(hyl.tname.first,hyl.tname.second) values(1,2);

insert into newtype_test(hyl.tname.first,hyl.tname.second) values(1,2)

ORA-00904: "HYL"."TNAME"."SECOND":标识符无效

尝试了半天,也没弄明白,怎么插入,于是尝试了一下用工具插入数据:

select * from newtype_test for update;

?

\

竟然成功插入了,查询有值,如下:

?

\

于是,尝试用工具逆向导出插入语句来看一看,如下:

\

粘贴后,如下所示:

prompt Importing table newtype_test...

set feedback off

set define off

insertinto newtype_test (ID, NEWNAME.FIRST, NEWNAME.S