Oracle 使用rowid属性创建对象类型
我正在尝试使用Oracle 使用rowid属性创建对象类型,oracle,object,oracle11g,ddl,rowid,Oracle,Object,Oracle11g,Ddl,Rowid,我正在尝试使用rowid数据类型创建一个类型,但由于我正在尝试使用的类型,我遇到了此错误: SQL> CREATE TYPE join_t IS OBJECT (inn rowid, out rowid ); / Warning: Type created with compilation errors. 即使我可以创建具有rowid数据类型的表: SQL> create table test_rowid (inn rowid,out rowid); Table cr
rowid
数据类型创建一个类型,但由于我正在尝试使用的类型,我遇到了此错误:
SQL> CREATE TYPE join_t IS OBJECT (inn rowid, out rowid );
/
Warning: Type created with compilation errors.
即使我可以创建具有rowid数据类型的表:
SQL> create table test_rowid (inn rowid,out rowid);
Table created.
是否可以使用rowid类型属性创建上述类型的连接?否,不能使用
rowid
字段创建对象类型。如果通过用户错误
视图或使用SQL*Plus命令显示错误
查看引发的实际错误,您将看到:
LINE/COL ERROR
-------- ------------------------------------------------------------------------------
1/28 PLS-00530: Illegal type used for object type attribute: 'ROWID'.
1/39 PLS-00530: Illegal type used for object type attribute: 'ROWID'.
:
数据类型限制
- 不能对属性施加NOTNULL约束李>
- 不能指定ROWID、LONG或LONG RAW类型的属性李>
- 不能为ADT指定UROWID的数据类型。
CREATE TYPE join_t IS OBJECT (inn varchar2(18), out varchar2(18) );
/
Type JOIN_T compiled
SELECT join_t(rowidtochar(rowid), rowidtochar(rowid)) FROM DUAL;
JOIN_T(ROWIDTOCHAR(ROWID),ROWIDTOCHAR(ROWID))(INN, OUT)
-------------------------------------------------------
JOIN_T('AAAAB0AABAAAAOhAAA', 'AAAAB0AABAAAAOhAAA')
不过,在对象中存储rowid似乎不是特别有用,因为它们可能会更改。“可能吗?”。不,不是。我正在这样做。。。在函数ROWIDTOCHAR中使用char类型。想知道我是不是真的做不到it@Siqueira-你的问题没有提到这一点。不,您确实不能将
rowid
用作对象属性数据类型,抱歉。