Plsql PLS-00103:遇到符号“;插入“;需要帮助查找错误原因pl/sql吗

Plsql PLS-00103:遇到符号“;插入“;需要帮助查找错误原因pl/sql吗,plsql,pls-00103,Plsql,Pls 00103,我讨厌这样做,但我的SQL很弱,无法使用错误消息来纠正语法。有人能帮我检查一下语法,看看是什么导致了这个错误吗?我想这和声明和开始有关。也许我应该把申报单拿走 我收到的错误是PLS-00103:在预期以下情况之一时遇到符号“INSERT”:。(*@%&=-+at in是mod rements而不是rem then或!=或~=>=您的语法完全错误。仅此而已 CASE WHEN INSERTING THEN INSERT INTO ...; INSERT INT

我讨厌这样做,但我的SQL很弱,无法使用错误消息来纠正语法。有人能帮我检查一下语法,看看是什么导致了这个错误吗?我想这和声明和开始有关。也许我应该把申报单拿走


我收到的错误是
PLS-00103:在预期以下情况之一时遇到符号“INSERT”:。(*@%&=-+at in是mod rements而不是rem then或!=或~=>=您的语法完全错误。仅此而已

CASE

   WHEN INSERTING THEN 
       INSERT INTO ...;
       INSERT INTO ...;
   WHEN UPDATING THEN 
       UPDATE ...;
   ELSE NULL;

END;
但我会建议你去看电影

IF INSERTING THEN
   ...;
ELSIF UPDATING THEN
   ...;
ELSE
   NULL;
END IF;

你的语法完全错误,仅此而已

CASE

   WHEN INSERTING THEN 
       INSERT INTO ...;
       INSERT INTO ...;
   WHEN UPDATING THEN 
       UPDATE ...;
   ELSE NULL;

END;
但我会建议你去看电影

IF INSERTING THEN
   ...;
ELSIF UPDATING THEN
   ...;
ELSE
   NULL;
END IF;

很好,成功了。谢谢@nexus

create or replace trigger emp_dept_briu
instead of insert or update on emp_dept_v 
referencing new as n   
     old as o
for each row 
declare 
l_deptno emp.deptno%type; 
begin
CASE
when inserting THEN 
insert into emp 
 ( empno, ename , deptno) 
values 
 ( :n.empno, :n.ename, :n.deptno ) 
; 
insert into dept 
 ( deptno, dname ) 
values 
 ( :n.deptno, :n.dname ) 
; 
when updating THEN 
update emp 
set ename = :n.ename 
,   deptno = :n.deptno 
where empno = :n.empno 
; 
update dept 
set dname = :n.dname 
where deptno = :n.deptno 
; 
else    
null
; 
end case;
end;

很好,成功了。谢谢@nexus

create or replace trigger emp_dept_briu
instead of insert or update on emp_dept_v 
referencing new as n   
     old as o
for each row 
declare 
l_deptno emp.deptno%type; 
begin
CASE
when inserting THEN 
insert into emp 
 ( empno, ename , deptno) 
values 
 ( :n.empno, :n.ename, :n.deptno ) 
; 
insert into dept 
 ( deptno, dname ) 
values 
 ( :n.deptno, :n.dname ) 
; 
when updating THEN 
update emp 
set ename = :n.ename 
,   deptno = :n.deptno 
where empno = :n.empno 
; 
update dept 
set dname = :n.dname 
where deptno = :n.deptno 
; 
else    
null
; 
end case;
end;

好的,让我试试。我从一个有人写的博客上复制了它,有人有相同的问题,但没有得到回答。让我试试,让你知道。谢谢你的输入!好的,让我试试。我从一个有人写的博客上复制了它,有人有相同的问题,但没有得到回答。让我试试,让你知道。谢谢你的输入!