【问题标题】:insert/update/select value in user defined type of oracle在用户定义的 oracle 类型中插入/更新/选择值
【发布时间】:2012-05-03 04:13:57
【问题描述】:

在oracle中创建用户自定义类型

CREATE OR REPLACE TYPE  "CUSTOMER_NAME" AS OBJECT(FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(20))
    /

使用以下代码在表中插入数据。

 INSERT INTO STAFF_INFO(STAFF_NAME,STAFF_PWD) VALUES (CUSTOMER_NAME('" & fname.Text & "','" & lname.Text & "'),'" & password.Text & "')"

但是,当我尝试时

select STAFF_ID,STAFF_PWD,CUSTOMER_NAME(FIRST_NAME,LAST_NAME) from staff_info

出现错误ORA-00904:“LAST_NAME”:标识符无效

当我尝试这个时

select * from staff_info

然后,我收到此错误 ORA-00932:不一致的数据类型:预期 NUMBER 得到了 ADS.CUSTOMER_NAME

需要帮助!!

【问题讨论】:

    标签: oracle oracle10g user-defined-types


    【解决方案1】:

    我面前没有 Oracle 实例,但我以前处理过这个问题。我记得我必须这样做:

    select a.STAFF_ID,
           a.STAFF_PWD,
           a.STAFF_NAME.FIRST_NAME,
           a.STAFF_NAME.LAST_NAME
      from staff_info a;
    

    虽然customer_name 字段可能不应该与customer_name 类型的名称匹配。

    【讨论】:

    • 仍然显示错误ORA-00904: "A"."CUSTOMER_NAME"."LAST_NAME": invalid identifier
    • 你的字段名和你的类型名一样吗?
    • 是的,现在它工作了。 !!因此,在更新/删除之类的任何操作的情况下,将使用相同的字段名称 ...??
    • 出于某种我不知道的原因,当您为表设置别名时,它会以这种方式工作。绝对是选择,我很确定更新和删除。但就像我说的那样,我面前没有实例可以证明这一点,所以你必须履行荣誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2021-11-22
    • 2020-08-24
    • 2012-01-08
    相关资源
    最近更新 更多