小编典典

如何创建将表列引用为数据类型的Oracle类型?

sql

我正在尝试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

这有什么问题?


阅读 167

收藏
2021-05-05

共1个答案

小编典典

它的问题%type在于PL / SQL语法。SQL不支持它。现在,我们使用PL /
SQL定义类型(尤其是成员函数,构造函数等),但是类型本身是SQL对象,因此遵循SQL规则。这意味着我们必须使用显式数据类型声明Type属性。

我同意这是一种耻辱,如果我们可以像这样在类型声明中引用表列,那将是一件很整洁的事情。不幸的是,Oracle在过去的两个版本中确实放慢了对TYPE实施的更改,因此我认为这在不久的将来不太可能改变。

真正 想看到的是Oracle支持以下语法:

CREATE OR REPLACE TYPE MY_TYPE AS OBJECT 
      (     one_row        some_table_name.%rowtype );

接口的动态对象:那有多酷?

2021-05-05