我遇到了SQL对象(ORACLE)的问题。 :(
我有一个抽象类型论坛,在ForumCategory中推广,类型为Category:
CREATE OR REPLACE TYPE Forum_t AS OBJECT
(
moderators Users_table_ref,
topics Topics_table,
MEMBER FUNCTION getName RETURN VARCHAR2
)
NOT FINAL NOT INSTANTIABLE;
/
CREATE TABLE Forum OF Forum_t
NESTED TABLE moderators STORE AS Liste_moderators,
NESTED TABLE topics STORE AS Liste_topics
(NESTED TABLE posts STORE AS Liste_posts);
CREATE OR REPLACE TYPE ForumCategory_t UNDER Forum_t
(
category REF Category_t,
OVERRIDING MEMBER FUNCTION getName RETURN VARCHAR2
);
/
CREATE OR REPLACE TYPE BODY ForumCategory_t AS
OVERRIDING MEMBER FUNCTION getName RETURN VARCHAR2 IS
c Category_t;
BEGIN
SELECT DEREF(SELF.category) INTO c FROM DUAL;
RETURN c.name;
END getName;
END;
/
CREATE OR REPLACE TYPE Category_t AS OBJECT
(
name VARCHAR2(60)
);
/
CREATE TABLE Category OF Category_t
(
CONSTRAINT PK_CAT_NAME PRIMARY KEY(name)
);
我希望在表格类别上插入一个触发器后,在桌面论坛上插入一个ForumCategory_t。
我有这段代码:
CREATE OR REPLACE TRIGGER Category_insert
AFTER INSERT ON Category
FOR EACH ROW
DECLARE
ref_cat REF Category_t;
BEGIN
SELECT REF(c) INTO ref_cat
FROM Category c
WHERE c.name = :NEW.name;
INSERT INTO Forum VALUES(ForumCategory_t(Users_table_ref(),Topics_table(),ref_cat));
END;
/
开头不起作用,我无法选择插入类别的REF(它在触发器外工作)。
拜托,我需要帮助^^
PS:抱歉我的英文