当前位置: 首页 > 面试题库 >

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

龚星洲
2023-03-14
问题内容

我正在尝试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不支持它。现在,我们使用PL /
SQL定义类型(尤其是成员函数,构造函数等),但是类型本身是SQL对象,因此遵循SQL规则。这意味着我们必须使用显式数据类型声明Type属性。

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

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

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

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



 类似资料:
  • 问题内容: 例如,假设你有两个类: 我有一个返回a的方法,List 并且我想将列表中的所有对象都强制转换为,TestB以便最终得到 问题答案: 简单地铸造几乎可行;但这是行不通的,因为你不能将一个参数的泛型类型转换为另一个参数。但是,你可以强制转换中间通配符类型,并且将允许它(因为你可以强制转换为通配符类型或从通配符类型强制转换,只是带有未选中的警告):

  • 问题内容: 假设我有某种类型: 现在我想基于这种类型创建一个临时表,我该怎么做? 同样,从此:基于用户定义的类型创建表: 问题答案: [\Pure.Krome的答案)显示了如何使用表变量而不是#temp表。如果您确实想要基于已知表类型的#temp表(而不必知道列名/定义),则可以说: 现在,应与表类型的表结构匹配,减去约束(以及从SQL Server 2014开始的边际有用的二级索引)。 当然,随

  • 我有以下java示例类: 它正在生成编译器警告: 类型安全:从捕获#1-of?扩展对象到T的未检查强制转换 我完全可以得到精确的T对象,如果我这样做: 它完全知道这是T型的。 为什么我不能创建该类的新实例?我怎样才能修复它? (我没有查找类型为“Add@SuppressWarnings(“unchecked”)”的响应)

  • 我有一个Oracle表,其中列类型为CLOB。我想保留列顺序并将数据类型更改为VARCHAR2。该列只包含文本。 我得到了一个标准的信息: 我们将不胜感激。我已经在这方面工作了一段时间了。如果你有任何问题请告诉我。

  • 字符串和元组是不可变的,而列表是可变(mutable)的,可以对它进行随意修改。我们还可以将字符串和元组转换成一个列表,只需使用 list 函数,比如: >>> s = 'hello' >>> list(s) ['h', 'e', 'l', 'l', 'o'] >>> a = (1, 2, 3) >>> list(a) [1, 2, 3] 本文主要介绍常用的列表方法: index count ap