こんにちは、私はコンパイルできないトリガを3つ持っています。 1)私はPL/SQLでこのテーブルを持っています - 解決策はこの記事の下の最初のコメントでした!PL/SQLの作業変数がありません
CREATE TABLE Personel_Project (
ProjectID INT,
PersonID INT,
FOREIGN KEY (ProjectID) REFERENCES Project(ProjectID),
FOREIGN KEY (PersonID) REFERENCES Personel(PersonID)
);/
そして、それは名前の宣言とは何かを持っている、ほぼ必ず、このトリガー文句を言わない仕事、イム。 PL/SQL::
誰かがDBでこのテーブルを編集するとき、それが起動するため、このトリガーの背後にある考え方は無視SQL文を、そして
CREATE OR REPLACE TRIGGER peopleInProjects
AFTER DELETE OR INSERT OR UPDATE ON Personel_Project
FOR EACH ROW
DECLARE
projectnumber NUMBER := :new.ProjectID;
peoplecount NUMBER;
BEGIN
Select INTO peoplecount Count(PersonID) FROM Personel_Project Group by projectnumber;
dbms_output.put_line('ID of project: ' || projectnumber);
dbms_output.put_line('number of people working in this project: ' || peoplecount);
END;
/
イムは、このエラー エラー(4,5)を取得します私たちは今編集したこのプロジェクトで何人の人々が働いているかを見ることができます。 new.DUE_DATEと今でイム:DUE_DATE
2)この表では
CREATE TABLE Project (
ProjectID INT PRIMARY KEY,
Name VARCHAR(255),
Due_date DATE,
Cost INT,
Payout INT
);
私は私がすることによって、テーブルの変更を呼び出すようにしようとしていたエラーを取得しました。前方に移動することができません
CREATE OR REPLACE TRIGGER showChange
BEFORE
INSERT OR
UPDATE OF DUE_DATE, COST, PAYOUT OR
DELETE
ON PROJECT
BEGIN
CASE
WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('you put in this information' || :DUE_DATE || :COST || :PAYOUT);
WHEN UPDATING('Due_date') THEN
DBMS_OUTPUT.PUT_LINE('you updated due date to be' || :DUE_DATE);
WHEN UPDATING('Cost') THEN
DBMS_OUTPUT.PUT_LINE('you updated cost to be' || :COST);
WHEN UPDATING('Payout') THEN
DBMS_OUTPUT.PUT_LINE('you updated Payout to be' || :PAYOUT);
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('You deleted the project');
END CASE;
END;
/
私は本当に私が得ることができるすべての助けを訴えるでしょう。ありがとう!このトリガーで
を行う方法ではないだけで、構文エラーのように見えます。 'Count(PersonID)INTO peoplecount'を選択します。 –
OK、それは1番の数字で動作します:D ありがとう – QuietDaniel