在 Oracle DB 中,我有以下两个表:
Task (TaskID, ..., AuthorID)
Author (AuthorID, level)
其中AuthorID
inTask
代表编写任务的作者。现在我编写了以下程序,即应该level
根据作者编写的任务数更新 -Attribute。
CREATE OR REPLACE PROCEDURE profil_level
IS
CURSOR c1 IS SELECT AuthorID, COUNT(AuthorID) as Total FROM Task
GROUP BY AuthorID;
result c1%ROWTYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO result;
EXIT WHEN c1%NOTFOUND;
IF(result.Total = 2 OR result.Total = 3) THEN
UPDATE TABLE Author SET level = 'advanced'
WHERE AuthorID = result.AuthorID;
END IF;
IF(result.Total >= 4) THEN
UPDATE TABLE Author SET level= 'proficient'
WHERE AuthorID = result.AuthorID;
END IF;
END LOOP;
CLOSE c1;
END;
试图执行这个语句,我得到了大量的错误,比如
无效的 SQL 语句
例如对于线result c1%ROWTYPE
或FETCH c1 into result
。此外,我得到了错误
PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:...
为行BEGIN OPEN c1
。我无法弄清楚我的代码有什么问题。我已经阅读了 Oracle 和其他站点上的教程,但在我目前看到的每个示例中,它们都使用了完全相同的语法。我是否需要更改“分隔符”(例如在 MySQL 中)?
谢谢你的帮助!