1) В вашем примере должно быть что-то еще, потому что это, похоже, работает для меня
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) Вероятно, вы хотите объявить V_EMPLID как имеющего тип Person.PersonNum% TYPE, чтобы вы могли быть уверены, что тип данных правильный, и что если тип данных таблицы изменится, вам не нужно будет менять ваш код.
3) Я предполагаю, что вы знаете, что ваш триггер не может запрашивать или обновлять таблицу, для которой определен триггер (поэтому нет запросов или вставок в someTable).