【问题标题】:Oracle Error Inconsistent Datatype on select statement选择语句上的 Oracle 错误数据类型不一致
【发布时间】:2014-03-18 21:31:14
【问题描述】:

我正在使用 Oracle 的控制台数据库快捷版,并且我正在使用自己的数据类型创建数据库。一切都可以创建和插入新数据,但是当我从我的数据类型中进行选择时,例如“方向”,Oracle 会返回错误 00932,“数据类型不一致”。

我执行这段代码:

CREATE TYPE lista_tel_t AS VARRAY(10) OF VARCHAR2(20) ; 

CREATE TYPE direccion_t AS OBJECT (
    calle VARCHAR2(200),
    ciudad VARCHAR2(200),
    prov CHAR(2),
    codpos VARCHAR2(20)
) ;

CREATE TYPE cliente_t AS OBJECT (
    clinum NUMBER,
    clinomb VARCHAR2(200), 
    direccion direccion_t,
    lista_tel lista_tel_t
) ;

CREATE TABLE cliente_tab OF cliente_t(clinum PRIMARY KEY); 

当我从一个类型中进行选择时,问题就来了,例如:

SELECT direccion FROM cliente_tab;

当我进行此选择时,它会返回以下错误:

ORA-00932: inconsistent datatypes: expected NUMBER got DIRECCION_T

我的问题是... 我怎样才能正确选择并显示结果?

【问题讨论】:

  • 根据您的代码,不应引发 ORA-00932。尝试在 SQL*PLUS 或 SQL Developer 或任何其他客户端而不是 Oracle XE 图形控制台中执行 select 语句。
  • 你能展示一些示例数据吗
  • 只是为了强调@NicholasKrasnov 您的代码在 SQL Fiddle 中运行 - sqlfiddle.com/#!4/0039fe/1

标签: oracle select types


【解决方案1】:

试试:

SELECT direccion.calle,
       direccion.ciudad,
       direccion.prov,
       direccion.codpos
  FROM cliente_tab;

或者,如果您想在 PL/SQL 中处理对象,您可以尝试将表批量收集到对象集合中。

欲了解更多信息,请参阅Oracle® Database Object-Relational Developer's Guide

【讨论】:

    猜你喜欢
    • 2011-06-28
    • 2019-04-22
    • 2021-02-19
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多