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).
В какой строке указывается эта ошибка? – 2008-10-14 20:43:49
Первая ошибка в последовательности находится в строке «WHERE PERSONID ...». – Equistatic 2008-10-14 21:02:24
Обновленный ответ, в вашем примере есть что-то еще, что не было опубликовано. Код, написанный для меня, работает. – 2008-10-14 21:14:17