【发布时间】:2017-05-05 10:54:10
【问题描述】:
创建可变数组:
CREATE OR REPLACE TYPE ListaCursos IS VARRAY(10) OF Cursos;
DECLARE
listaCursos1 ListaCursos;
c1 Cursos;
c2 Cursos;
p_ref REF Profesor;
p_ref2 REF Profesor;
BEGIN
SELECT REF(p) INTO p_ref FROM Profesorado p WHERE p.codigo = 3;
c1 := NEW Cursos(1, 'Curso 1', p_ref, 20, '01/06/2011', '01/07/2011', 30);
SELECT REF(p) INTO p_ref2 FROM Profesorado p WHERE p.dni='51083099F';
c2 := NEW Cursos(2, 'Curso 2', p_ref2, 20, '01/06/2011', '01/07/2011', 30);
listaCursos1 := ListaCursos(c1, c2);
END;
/
尝试使用它:
CREATE TABLE Alumnado OF Alumno;
DECLARE
a1 Alumno;
a2 Alumno;
listaCursos1 ListaCursos;
BEGIN
a1 := NEW Alumno(100, '76401092Z', 'MANUEL', 'SUAREZ IBAÑEZ', 'M', '30/6/1990', listaCursos1(1));
a2 := NEW Alumno(102, '6915588V', 'MILAGROSA', 'DIAZ PEREZ', 'F', '28/10/1984', listaCursos1(2));
INSERT INTO Alumnado VALUES (a1);
INSERT INTO Alumnado VALUES (a2);
END;
/
现在它显示了这个错误:
声明 * 第 1 行的错误: ORA-06531: 对未初始化集合的引用 ORA-06512: 在第 6 行
【问题讨论】:
-
您正在尝试从未初始化的集合中读取。
listaCursos1(1) <- error. -
我在另一个块中初始化了它,我该如何存储它?
-
你需要这个值多久(
listaCursos1)?仅适用于这些插入? -
我需要在其他块中使用它们。
-
我已经添加了答案但我建议重新设计您的代码并简化它。
标签: plsql