我想用下面的代码来定义一个type
。如何创建引用数据类型的表列的Oracle Type?
CREATE OR REPLACE TYPE MY_TYPE AS OBJECT (
app_id some_table_name.app_id%type
);
如果我运行这个,我得到的错误。
Error(4,32): PLS-00201: identifier 'some_table_name.app_id' must be declared
这是什么问题?
我想用下面的代码来定义一个type
。如何创建引用数据类型的表列的Oracle Type?
CREATE OR REPLACE TYPE MY_TYPE AS OBJECT (
app_id some_table_name.app_id%type
);
如果我运行这个,我得到的错误。
Error(4,32): PLS-00201: identifier 'some_table_name.app_id' must be declared
这是什么问题?
这是什么问题,%type
是PL/SQL语法。它在SQL中不受支持。
我同意这是一个耻辱,如果我们可以像这样在类型声明中引用表列,那将会非常整齐。不幸的是,Oracle在过去的几个版本中确实放慢了对TYPE实现的改变,所以我认为在不久的将来它不太可能发生改变。
我真的喜欢看到的是甲骨文支持哪些语法如下:为接口
CREATE OR REPLACE TYPE MY_TYPE AS OBJECT
( one_row some_table_name.%rowtype);
动态对象:如何降温会是这样?
宣布在数据库中的类型时,您不能使用some_table_name.app_id%type
,任何超过你可以这样做:
create table emp (empno number,
deptno dept.deptnp%type, -- NOT ALLOWED
);
你必须使用一个内置的,如NUMBER,VARCHAR2(10)型或用户自定义类型如mytype
感谢您的回答。 – AppleGrew 2012-03-09 13:43:05
有关此[Oracle论坛]的更多详细信息(https://forums.oracle.com/forums/thread.jspa?threadID=2269924)。我猜想是有道理的,但在我看来,这似乎是我直觉上想要做的最佳实践。 – wmorrison365 2013-02-27 11:25:05