【问题标题】:ORA-00927: missing equal sign when trying to update table in object-relational DBORA-00927: 尝试更新对象关系数据库中的表时缺少等号
【发布时间】:2022-01-25 05:32:19
【问题描述】:

我正在尝试了解对象关系技术并创建父类型:

CREATE OR REPLACE TYPE STUDENT
AS OBJECT(
    FIO VARCHAR2(200),
    Bday DATE,
    Pas_Id NUMBER(20),
    Address VARCHAR2(50))
NOT INSTANTIABLE
NOT FINAL;

子类型:

CREATE OR REPLACE TYPE BACH
UNDER STUDENT(
    fieldOfStud varchar2(200),
    Group_N number(4),
    ege number(4),
    GPA number(4),
    MEMBER FUNCTION year_N RETURN NUMBER);

--тело типа бакалавр
CREATE OR REPLACE TYPE BODY BACH IS
MEMBER FUNCTION year_N RETURN NUMBER IS
    BEGIN
        IF SUBSTR(Group_N, 1, 1) BETWEEN 1 and 4 THEN
            RETURN SUBSTR(Group_N, 1, 1);
        END IF;
        RETURN 0;
    END;
END;

创建表:

CREATE TABLE Students_Table(
SID  NUMBER CONSTRAINT id_pk PRIMARY KEY,
stdt STUDENT
);

并插入数据。我 100% 确定它存在。 我想更新表和更改组,例如从 5231 到 6231:

update Students_Table st 
set    TREAT(stdt as maga).Group_N = TREAT(stdt as maga).Group_N+1000 
where  TREAT(stdt AS MAGA).Pas_Id = 241122

但出现错误

ORA-00927: missing equal sign

【问题讨论】:

    标签: oracle plsql object-relational-model


    【解决方案1】:

    您需要在语句前面应用转换,以便更新只看到子类型:

    update ( select s.sid, treat(stdt as bach) as stdt from students_table s ) st 
    set    st.stdt.group_n = st.stdt.group_n + 1000 
    where  st.stdt.pas_id = 241122;
    

    DB Fiddle

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      相关资源
      最近更新 更多