触发错误PLS-00103:且错误在下面发布的代码的第5行中

错误在下面发布的代码的第5行中 我无法识别错误, 但是,触发器可以完美创建,并且还可以按照代码中的说明修改表值

create or replace trigger "SERVICE_T1"
BEFORE
insert on "SERVICE"
for each row
begin 
SELECT 'S'||to_char(SERVICE_ID_SEQ.nextval,'fm00000000') 
INTO :new.service_id 
FROM service 
end;
/ 
yy2626 回答:触发错误PLS-00103:且错误在下面发布的代码的第5行中

我的看法,这一行

FROM service 

应该是

FROM dual;

演示:

SQL> create table service (service_id varchar2(50));

Table created.

SQL> create sequence service_id_seq;

Sequence created.

SQL> create or replace trigger "SERVICE_T1"
  2    BEFORE insert on "SERVICE"
  3    for each row
  4  begin
  5    SELECT 'S'||to_char(SERVICE_ID_SEQ.nextval,'fm00000000')
  6    INTO :new.service_id
  7    FROM dual;
  8  end;
  9  /

Trigger created.

SQL> insert into service values ('A');

1 row created.

SQL> select * From service;

SERVICE_ID
--------------------------------------------------
S00000001

SQL>

或者更好的是,完全避免使用select

SQL> create or replace trigger "SERVICE_T1"
  2    BEFORE insert on "SERVICE"
  3    for each row
  4  begin
  5    :new.service_id := 'S'||to_char(SERVICE_ID_SEQ.nextval,'fm00000000');
  6  end;
  7  /

Trigger created.

SQL>
本文链接:https://www.f2er.com/3107016.html

大家都在问