CREATE OR REPLACE TRIGGER waiting_queueUSER_NAME
BEFORE INSERT OR UPDATE ON tbl_rest_waiting_queue
FOR EACH ROW 
DECLARE 
    BEGIN 
         :New.USER_NAME := (Select USER_NAME from tbl_agent_status t where t.agent_code =:New.User_Code)     END  
END waiting_queueUSER_NAME
就是 waiting_queue表中USER_NAME 这个表的字段是空,在插入数据的时候想从别一个表tbl_agent_status 来取得用户名,语句大概是这个意思,应该怎么谢,谢谢大家

解决方案 »

  1.   

    create or replace trigger tri
      before insert on b1  
      for each row
    declare
      tname varchar2(10);
    begin
      select a2 into tname from a1 where a1=:new.b1;
      :new.b2 := tname;
    end tri;
      

  2.   

    照楼上的说可以编译通过,在运行是出错CREATE OR REPLACE TRIGGER waiting_queueUSER_NAME
    BEFORE INSERT ON tbl_rest_waiting_queue
    FOR EACH ROW 
    DECLARE 
      TUSERNAME varchar2(20);
    begin 
      Select t.user_name into TUSERNAME from tbl_agent_status t where t.agent_code =:New.User_Code;
      :New.USER_NAME := TUSERNAME; END waiting_queueUSER_NAME;
      

  3.   

    CREATE OR REPLACE TRIGGER waiting_queueUSER_NAME
       BEFORE INSERT
       ON tbl_rest_waiting_queue
       FOR EACH ROW
    DECLARE
    BEGIN
       SELECT   t.user_name
         INTO   :New.USER_NAME
         FROM   tbl_agent_status t
        WHERE   t.agent_code = :New.User_Code AND ROWNUM = 1;
    END;
      

  4.   

    注意使用到select ... into时,如果未找到,会抛出异常,导致插入失败,可以用以下结构处理异常。
    begin
        ...
    ecxeption
        when others then null;
    end;