PLS-00302:必须声明组件,我不明白为什么会收到此错误

时间:2019-12-11 09:14:53

标签: sql oracle

我开始学习sql,但我不明白为什么会有错误

CREATE OR REPLACE TYPE direccion AS OBJECT (
    calle         VARCHAR2(25),
    ciudad        VARCHAR2(20),
    codigo_post   NUMBER(5)
);
/

CREATE OR REPLACE TYPE persona AS OBJECT (
    codigo      NUMBER,
    nombre      VARCHAR2(35),
    direc       direccion,
    fecha_nac   DATE
);
/

CREATE OR REPLACE TYPE t_alumno AS OBJECT (
    al      persona,
    nota1   NUMBER,
    nota2   NUMBER,
    nota3   NUMBER
);
/

DECLARE
    p   persona := persona(NULL, NULL, NULL, NULL);
    dir   direccion := direccion(NULL, NULL, NULL);
    al    t_alumno := t_alumno(NULL, NULL, NULL, NULL);
BEGIN
    al := t_alumno(persona(2, 'ALBERTO', direccion('DDDD', 'CIUDAD', 88), sysdate), 5, 10, 7);

    dbms_output.put_line('NOMBRE: '
                         || al.p.nombre
                         || ' * CALLE: '
                         || al.p.direc.calle);

    dbms_output.put_line('NOTAS: '
                         || al.nota1
                         || ' * '
                         || al.nota2
                         || '*'
                         || al.nota3);

END;
/

2 个答案:

答案 0 :(得分:0)

personat_alumno成员的名字是al,而不是p

dbms_output.put_line('NOMBRE: '
                         || al.al.nombre -- <- here is a bug al.p.nombre
                         || ' * CALLE: '
                         || al.p.direc.calle);

答案 1 :(得分:0)

我认为您在第一个<input type="checkbox" onchange="handleChange(event)"> 的两个地方没有正确使用function handleChange(e) { const {checked} = e.target; }

应该类似于以下内容:

type

干杯!