在PL / SQL触发器中使用Select语句的语法是什么?

前端之家收集整理的这篇文章主要介绍了在PL / SQL触发器中使用Select语句的语法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这就是我目前所拥有的:
  1. CREATE OR REPLACE TRIGGER MYTRIGGER
  2. AFTER INSERT ON SOMetaBLE
  3. FOR EACH ROW
  4.  
  5. DECLARE
  6. v_emplid varchar2(10);
  7.  
  8. BEGIN
  9. SELECT
  10. personnum into v_emplid
  11. FROM PERSON
  12. WHERE PERSONID = :new.EMPLOYEEID;
  13.  
  14. dbms_output.put(v_emplid);
  15.  
  16. /* INSERT INTO SOMEOTHERTABLE USING v_emplid and some of the other values from the trigger table*/
  17.  
  18. END MYTRIGGER;

DBA_ERRORS有这个错误
PL / sql:ORA-00923:在预期的位置找不到FROM关键字

解决方法

1)你的例子必须有其他东西,因为这肯定对我有用
  1. sql> create table soMetable( employeeid number );
  2.  
  3. Table created.
  4.  
  5. sql> create table person( personid number,personnum varchar2(10) );
  6.  
  7. Table created.
  8.  
  9. sql> ed
  10. Wrote file afiedt.buf
  11.  
  12. 1 CREATE OR REPLACE TRIGGER MYTRIGGER
  13. 2 AFTER INSERT ON SOMetaBLE
  14. 3 FOR EACH ROW
  15. 4 DECLARE
  16. 5 v_emplid varchar2(10);
  17. 6 BEGIN
  18. 7 SELECT personnum
  19. 8 into v_emplid
  20. 9 FROM PERSON
  21. 10 WHERE PERSONID = :new.EMPLOYEEID;
  22. 11 dbms_output.put(v_emplid);
  23. 12 /* INSERT INTO SOMEOTHERTABLE USING v_emplid and some of the other values
  24. from the trigger table*/
  25. 13* END MYTRIGGER;
  26. 14 /
  27.  
  28. Trigger created.
  29.  
  30. sql> insert into person values( 1,'123' );
  31.  
  32. 1 row created.
  33.  
  34. sql> insert into soMetable values( 1 );
  35.  
  36. 1 row created.

2)您可能希望将V_EMPLID声明为Person.PersonNum%TYPE类型,以便您可以确定数据类型是正确的,这样如果表的数据类型发生更改,您将无需更改代码.

3)我假设您知道您的触发器无法查询或更新定义了触发器的表(因此不会对soMetable进行查询或插入).

猜你在找的MsSQL相关文章