ALTER TYPE Profesor ADD CONSTRUCTOR FUNCTION Profesor(codigo INTEGER, nombre
VARCHAR2,
primerApellido VARCHAR2, segundoApellido VARCHAR2, especialidad VARCHAR2)
RETURN SELF AS RESULT CASCADE;
/
CREATE OR REPLACE TYPE BODY Profesor AS CONSTRUCTOR FUNCTION Profesor(codigo
INTEGER, nombre VARCHAR2,
primerApellido VARCHAR2, segundoApellido VARCHAR2, especialidad VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
SELF.codigo := codigo;
SELF.nombre := nombre;
SELF.apellidos := primerApellido||' '||segundoApellido;
SELF.especialidad := especialidad;
RETURN;
END;
END;
/
我创建了Object,然后我修改了它,添加了一个构造函数并创建了一个类型体。 代码没有显示错误但是如果我尝试添加一个新方法,它允许我添加方法而不是代码:
ALTER TYPE Profesor ADD MEMBER FUNCTION getNombreCompleto RETURN VARCHAR2
CASCADE;
/
ALTER TYPE BODY Profesor ADD MEMBER FUNCTION getNombreCompleto RETURN
VARCHAR2
CASCADE
IS
BEGIN
RETURN SELF.nombre;
END getNombreCompleto;
END;
问题是,如何改变物体的体型?
谢谢!
答案 0 :(得分:0)
此解决方案应该有效。 Alter type member function\ constructor
仅适用于类型规范。对于身体,你必须重建身体。
ALTER TYPE Profesor ADD CONSTRUCTOR FUNCTION Profesor(codigo INTEGER, nombre
VARCHAR2,
primerApellido VARCHAR2, segundoApellido VARCHAR2, especialidad VARCHAR2)
RETURN SELF AS RESULT CASCADE;
/
ALTER TYPE Profesor ADD MEMBER FUNCTION getNombreCompleto RETURN VARCHAR2
CASCADE;
/
CREATE OR REPLACE TYPE BODY Profesor AS
CONSTRUCTOR FUNCTION Profesor(codigo
INTEGER, nombre VARCHAR2,
primerApellido VARCHAR2, segundoApellido VARCHAR2, especialidad VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
SELF.codigo := codigo;
SELF.nombre := nombre;
SELF.apellidos := primerApellido||' '||segundoApellido;
SELF.especialidad := especialidad;
RETURN;
END;
MEMBER FUNCTION getNombreCompleto RETURN
VARCHAR2
CASCADE
IS
BEGIN
RETURN SELF.nombre;
END getNombreCompleto;
END;
END;
/