Java Mailing List Archive

http://www.dba.5341.com/

Home » Home (12/2007) » oracle l »

How to get the table infomation of a table is referencing in a trigger?

小燕

2006-07-09

Replies:

How to get the table infomation of a table is referencing in a trigger through a programme?
for example:
conn test/test
 
SQL> desc courses;
Name                 Type           Nullable Default Comments
-------------------- -------------- -------- ------- --------
COURSES_ID           NUMBER         Y                        
COURSES_INFO         VARCHAR2(1024) Y      
COURSES_SCORE        NUMBER         Y    
 
SQL> desc scores;
Name                 Type         Nullable Default Comments
-------------------- ------------ -------- ------- --------
SCORE                NUMBER                                
DESCRIPTION          VARCHAR2(20) Y  
 

and the foreign key  column of the tabel 'courses' is COURSES_SCORE ,the referencing table is 'scores',and the primary key column of table'scores' is SCORE
now in trigger:
 
CREATE OR REPLACE TRIGGER my_trigger
      BEFORE INSERT  ON  test.courses
      FOR EACH  ROW
     
DECLARE      
         rcname VARCHAR2(80);
         fathertable VARCHAR2(80);
         ownername VARCHAR2(80);
         f_columnname VARCHAR2(80);
         c_columnname VARCHAR2(80);
         myinfo VARCHAR2(80);
         ddlstr varchar2(500);
      BEGIN        
          SELECT R_CONSTRAINT_NAME INTO rcname FROM All_Constraints
            WHERE owner='TEST'AND table_name='COURSES';
        
         SELECT table_name INTO fathertable FROM All_Constraints
            WHERE CONSTRAINT_NAME=upper(rcname);
        
         SELECT owner INTO ownername FROM All_Constraints
            WHERE CONSTRAINT_NAME=upper(rcname);
        
         SELECT COLUMN_NAME   INTO c_columnname FROM All_Cons_Columns
            WHERE  table_name=upper('courses') AND owner='TEST';
         SELECT COLUMN_NAME   INTO f_columnname FROM All_Cons_Columns
            WHERE  table_name=upper(fathertable) AND owner=upper(ownername);         
         
         ddlstr:='
            declare
                myinfo varchar2(80);
             begin
                    select DESCRIPTIONl into myinfo  from '|| fathertable||'where '|| f_columnname||'=new.'||c_columnname||';
               end;'; 
       execute immediate ddlstr;      
end;
 

but the 'myinfo'  is not useful  in trigger my_trigger because it is a local variable,but now i want to get the value of 'myinfo', how can I?
Thank you in advance!
©2008 dba.5341.com - Jax Systems, LLC, U.S.A.