我有以下脚本:
ALTER TABLE ODANBIRM
ADD (OBID NUMBER(10, 0) );
----------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER TR_OB_INC
BEFORE INSERT ON ODANBIRM
FOR EACH ROW
BEGIN
SELECT SEQ_OB.NEXTVAL INTO :NEW.OBID FROM DUAL;
END;
-----------------------------------------------------------------------------
DECLARE
CURSOR CUR IS
SELECT ROWID AS RID FROM ODANBIRM;
RC CUR%ROWTYPE;
BEGIN
OPEN CUR;
LOOP
FETCH CUR INTO RC;
EXIT WHEN CUR%NOTFOUND;
UPDATE ODANBIRM SET OBID=SEQ_OB.NEXTVAL WHERE ROWID=RC.RID;
END LOOP;
CLOSE CUR;
COMMIT;
END;
如您所见,我有三个不同的脚本(我用虚线分隔它们。)如果我运行第一个脚本,但第二个脚本(我想在其中创建触发器)失败说“遇到符号“DECLARE””。如果我把触发器创建脚本拿走,我不会出错,第一个和最后一个脚本运行没有问题。我该怎么做才能在不出错的情况下运行它们?
编辑:然后我意识到第二个脚本应该是这样的:
UPDATE ODANBIRM SET OBID=SEQ_OB.NEXTVAL;
所以在循环中做这个简单的事情是浪费时间和低效的。我曾经听说应该使用尽可能多的 SQL 和尽可能少的 PL SQL 以提高效率。我认为这是个好主意。