Oracle DBには、次の2つのテーブルがあります。
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のように)?
ご協力いただきありがとうございます!