1) Il doit y avoir quelque chose d'autre à votre exemple parce que cela semble sûr de travailler pour moi
SQL> create table someTable(employeeid number);
Table created.
SQL> create table person(personid number, personnum varchar2(10));
Table created.
SQL> ed
Wrote file afiedt.buf
1 CREATE OR REPLACE TRIGGER MYTRIGGER
2 AFTER INSERT ON SOMETABLE
3 FOR EACH ROW
4 DECLARE
5 v_emplid varchar2(10);
6 BEGIN
7 SELECT personnum
8 into v_emplid
9 FROM PERSON
10 WHERE PERSONID = :new.EMPLOYEEID;
11 dbms_output.put(v_emplid);
12 /* INSERT INTO SOMEOTHERTABLE USING v_emplid and some of the other values
from the trigger table*/
13* END MYTRIGGER;
14/
Trigger created.
SQL> insert into person values(1, '123');
1 row created.
SQL> insert into sometable values(1);
1 row created.
2) Vous voulez probablement déclarer V_EMPLID comme étant de type Person.PersonNum% TYPE afin que vous puissiez assurez-vous que le type de données est correct et que, si le type de données de la table change, vous n'avez pas besoin de modifier votre code.
3) Je suppose que vous savez que votre déclencheur ne peut pas interroger ou mettre à jour la table sur laquelle le déclencheur est défini (donc pas de requêtes ou d'insertions dans someTable).
À quelle ligne cette erreur est-elle signalée? –
La première erreur de la séquence est sur la ligne 'WHERE PERSONID ...'. – Equistatic
Mis à jour ma réponse, il y a quelque chose d'autre à votre exemple qui n'a pas été posté. Le code comme écrit fonctionne pour moi. –