1) Debe haber algo más a su ejemplo, porque seguro que parece que funciona para mí
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) Es posible que desee declarar V_EMPLID como del tipo Person.PersonNum% TIPO, para que pueda asegúrese de que el tipo de datos sea correcto y de que si el tipo de datos de la tabla cambia no necesitará cambiar su código.
3) Supongo que sabe que su desencadenante no puede consultar o actualizar la tabla en la que se define el desencadenador (por lo tanto, no consultas o inserta en alguna tabla).
¿En qué línea se ha informado de este error? –
El primer error en la secuencia se encuentra en la línea 'WHERE PERSONID ...'. – Equistatic
Actualizado mi respuesta, hay algo más en su ejemplo que no se ha publicado. El código tal como está escrito funciona para mí. –