Using user_tab_columns on the trigger

dear all
i need to use user_tab_columns on the trigger before delete
like ex
SELECT a.column_name
INTO l_col_name
FROM user_tab_columns a
WHERE a.table_name = 'EMPLOYEE' AND a.nullable = 'N';
this is not work because the query not retrieve column name but emp_no is not null , if any suggestion to solve this issue?

i need to use user_tab_columns on the trigger before
delete And what business case you are trying to solve?
Gints Plivna
http://www.gplivna.eu

Similar Messages

  • Error in Forms while creating the trigger- WHEN-CREATE-RECORD

    Hello,
    Right now I am using 11g client side and 10g database.
    I am constantly getting an error while creating triggers in 11g.
    I have created a sequence in SQL developer using the following code:
    create sequence loc_id_sequence
    start with 14;
    After creating the sequence. I am trying to write the PL/SQL code in forms builder for the trigger WHEN-CREATE-RECORD
    declare
    loc_id number;
    begin
    loc_id := loc_id_sequence.nextval;
    end;
    But I have been getting the following error constantly. Can anyone please help me?
    "Error 0 at line 5, column 4
    SQL statement ignored".
    Can anyone please tell me why I am getting that error

    In fact, even I thought there might be some problem with the connectivity with the 10g database and 11g client but the other DB related code works.
    I just have the problem with using sequence for the trigger WHEN-CREATE-RECORD.
    In fact I also tried using WHEN-NEW-RECORD-INSTANCE smart trigger instead of WHEN-CREATE-RECORD for the same sequence. But even that doesn't work.
    Do u have any idea of what that error means?
    "Error 0 at line 5, column 4
    SQL statement ignored"
    Edited by: Pooja 1985 on Feb 26, 2013 5:43 PM
    Edited by: Pooja 1985 on Feb 26, 2013 5:44 PM

  • Using PFI0 as a trigger and PFI1 as an input on PCI-5114

    Hi,
    I have a NI-5114, and I'm currently using PFI0 as the trigger, and reading out the two analog channels.  I'd like to add a second digital input through the other PFI so I can simply test if something is on or off (already a digital signal).  So, when PFI0 triggers, it digitizes the two inputs and reads whether or not PFI1 is on or off (no timing necessary).  Is there a trick to get this done?
    Thanks,
    Karl 

    Hello Karl,
    Since the PFI lines are generally used as triggers, we cannot read a PFI line unless you are specifically triggering off it. What you could do is as soon as you receive a trigger you can export a trigger of PFI1 which you could connect to one input of an external AND gate and second one is the signal you want to monitor. or can use another DIO DAQ device like USB-6501 to monitor the status of external digital signal. 
    Good Luck
    NI-khil

  • How to use ABAP Webservice to Trigger the start of BPMN

    Hello,
    My scenario is that i define a webservice in the SAP ECC system and import it in the process composer as the service interface. As to the start event, i set the above service interface and operation as the trigger service.
    After then, i call this webservice in the user exit of a T-Code. However, the BPMN is not started by this webservice call.
    Anyone can explain on this and tell me how to use the ABAP webservice as the starting event service interface?
    Thanks in advance
    Erick

    Hi Erick,
    When you develop a process model and use some arbitrary service interface in the message start event then this will be exposed on the Java / BPM system you deploed the process definition on.
    That allows you to start the process via this web service once you know its endpoint.
    So in case you want to start your process from the ABAP side you would need to call this endpoint on the Java side out of your ABAP system.
    Simply calling the web service / code on your ABAP system and hoping that this will also invoke the Java stack won't work I AFAIK.
    Best regards,
    Martin

  • I am using PCI-6033E IO card and i would like to send 5 volts (high logic ) to the trigger box. the trigger box will trigger the frame grabber card, that i am using for image acquisition.

    i am using PCI-6033E IO card and i would like to send 5 volts (high logic ) to the trigger box. the trigger box will trigger the frame grabber card, that i am using for image acquisition.

    Hello;
    The first thing you need to figure out is the shape of the trigger pulse needed.
    In case you just need a logic high TTL pulse, you can use one of the digital lines of your DAQ device.
    In case you need a pulse train (multiple trigger pulses), you will need to configure one of the general purpose counters to accomplish that task.
    You can find examples in both Labview and NI-DAQ showing how to program your DAQ board to accomplish both approaches.
    Hope this helps.
    Filipe A.
    Applications Engineer
    National Instruments

  • Stop one Daq but without use the trigger

    Hello everybody,
    I have one while loop and in it I have my DAQ, one time I have start with the Data Aquisition I need stop it and re-configure it again, but it is indepently of the trigger and I can't stop the while loop either.
    Is there some path to do it??
    Thanks
    Gonzalo De Francisco

    Dear Gonzalo
    You are talking about pausing a while loop, right? If so, this post http://forums.ni.com/ni/board/message?board.id=170&message.id=10689&requireLogin=False could be helpful.
    Best regards
    Philipp Roessler

  • How to get the table name in the trigger definition without hard coding.

    CREATE  TRIGGER db.mytablename
    AFTER UPDATE,INSERT
    AS
        INSERT INTO table1(col1)
        SELECT InsRec.col1   
        FROM
        INSERTED Ins
       --Below i am calling one sp for which i have to pass the table name
       EXEC myspname 'tablename'
      In the above trigger,presently i am hard coding the tablename
      but is it possible to get the table name dynamically on which the trigger is defined in order to avoid hard coding the table name

    I really liked your audit table concept.  You inspired me to modify it so that, the entire recordset gets captured and added a couple of other fields.  Wanted to share my end result.
    USE [YourDB]
    GO
    /****** Object: Trigger [dbo].[iudt_AutoAuditChanges] Script Date: 10/18/2013 12:49:55 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER TRIGGER [dbo].[iudt_AutoAuditChanges]
    ON [dbo].[YourTable]
    AFTER INSERT,DELETE,UPDATE
    AS
    BEGIN
    SET NOCOUNT ON;
    Declare @v_AuditID bigint
    IF OBJECT_ID('dbo.AutoAudit','U') IS NULL BEGIN
    CREATE TABLE [dbo].[AutoAudit]
    ( [AuditID] bigint identity,
    [AuditDate] DateTime,
    [AuditUserName] varchar(128),
    [TableName] varchar(128) NULL,
    [OldContent] XML NULL,
    [NewContent] XML NULL
    ALTER TABLE dbo.AutoAudit ADD CONSTRAINT
    PK_AutoAudit PRIMARY KEY CLUSTERED
    [AuditID]
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    CREATE NONCLUSTERED INDEX [idx_AutoAudit_TableName_AuditDate] ON [dbo].[AutoAudit]
    ( [TableName] ASC,
    [AuditDate] ASC
    )WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    END
    Select * Into #AuditDeleted from deleted
    Select * Into #AuditInserted from inserted
    While (Select COUNT(*) from #AuditDeleted) > 0 OR (Select COUNT(*) from #AuditInserted) > 0
    Begin
    INSERT INTO [dbo].[AutoAudit]
    ( [AuditDate], [AuditUserName], [TableName], [OldContent], [NewContent])
    SELECT
    GETDATE(),
    SUSER_NAME(),
    [TableName]=object_name([parent_obj]),
    [OldContent]=CAST((SELECT TOP 1 * FROM #AuditDeleted D FOR XML RAW) AS XML),
    [NewContent]=CAST((SELECT TOP 1 * FROM #AuditInserted I FOR XML RAW) AS XML)
    FROM sysobjects
    WHERE
    [xtype] = 'tr'
    and [name] = OBJECT_NAME(@@PROCID)
    Set @v_AuditID = SCOPE_IDENTITY()
    Delete from AutoAudit
    Where AuditID = @v_AuditID
    AND Convert(varchar(max),oldContent) = Convert(varchar(max),NewContent)
    Delete top(1) from #AuditDeleted
    Delete top(1) from #AuditInserted
    End
    END

  • Need to increase performance-bulk collect in cursor with limit and in the for loop inserting into the trigger table

    Hi all,
    I have a performance issue in the below code,where i am trying to insert the data from table_stg into target_tab and in parent_tab tables and then to child tables via cursor with bulk collect .the target_tab and parent_tab are huge tables and have a row wise trigger enabled on it .the trigger is mandatory . This timetaken for this block to execute is 5000 seconds.Now my requirement is to reduce it to 5 to 10 mins.
    can someone please guide me here.Its bit urgent .Awaiting for your response.
    declare
    vmax_Value NUMBER(5);
      vcnt number(10);
      id_val number(20);
      pc_id number(15);
      vtable_nm VARCHAR2(100);
      vstep_no  VARCHAR2(10);
      vsql_code VARCHAR2(10);
      vsql_errm varchar2(200);
      vtarget_starttime timestamp;
      limit_in number :=10000;
      idx           number(10);
              cursor stg_cursor is
             select
                   DESCRIPTION,
                   SORT_CODE,
                   ACCOUNT_NUMBER,
                     to_number(to_char(CORRESPONDENCE_DATE,'DD')) crr_day,
                     to_char(CORRESPONDENCE_DATE,'MONTH') crr_month,
                     to_number(substr(to_char(CORRESPONDENCE_DATE,'DD-MON-YYYY'),8,4)) crr_year,
                   PARTY_ID,
                   GUID,
                   PAPERLESS_REF_IND,
                   PRODUCT_TYPE,
                   PRODUCT_BRAND,
                   PRODUCT_HELD_ID,
                   NOTIFICATION_PREF,
                   UNREAD_CORRES_PERIOD,
                   EMAIL_ID,
                   MOBILE_NUMBER,
                   TITLE,
                   SURNAME,
                   POSTCODE,
                   EVENT_TYPE,
                   PRIORITY_IND,
                   SUBJECT,
                   EXT_PRD_ID_TX,
                   EXT_PRD_HLD_ID_TX,
                   EXT_SYS_ID,
                   EXT_PTY_ID_TX,
                   ACCOUNT_TYPE_CD,
                   COM_PFR_TYP_TX,
                   COM_PFR_OPT_TX,
                   COM_PFR_RSN_CD
             from  table_stg;
    type rec_type is table of stg_rec_type index by pls_integer;
    v_rt_all_cols rec_type;
    BEGIN
      vstep_no   := '0';
      vmax_value := 0;
      vtarget_starttime := systimestamp;
      id_val    := 0;
      pc_id     := 0;
      success_flag := 0;
              vstep_no  := '1';
              vtable_nm := 'before cursor';
        OPEN stg_cursor;
              vstep_no  := '2';
              vtable_nm := 'After cursor';
       LOOP
              vstep_no  := '3';
              vtable_nm := 'before fetch';
    --loop
        FETCH stg_cursor BULK COLLECT INTO v_rt_all_cols LIMIT limit_in;
                  vstep_no  := '4';
                  vtable_nm := 'after fetch';
    --EXIT WHEN v_rt_all_cols.COUNT = 0;
        EXIT WHEN stg_cursor%NOTFOUND;
    FOR i IN 1 .. v_rt_all_cols.COUNT
      LOOP
       dbms_output.put_line(upper(v_rt_all_cols(i).event_type));
        if (upper(v_rt_all_cols(i).event_type) = upper('System_enforced')) then
                  vstep_no  := '4.1';
                  vtable_nm := 'before seq sel';
              select PC_SEQ.nextval into pc_id from dual;
                  vstep_no  := '4.2';
                  vtable_nm := 'before insert corres';
              INSERT INTO target1_tab
                           (ID,
                            PARTY_ID,
                            PRODUCT_BRAND,
                            SORT_CODE,
                            ACCOUNT_NUMBER,
                            EXT_PRD_ID_TX,         
                            EXT_PRD_HLD_ID_TX,
                            EXT_SYS_ID,
                            EXT_PTY_ID_TX,
                            ACCOUNT_TYPE_CD,
                            COM_PFR_TYP_TX,
                            COM_PFR_OPT_TX,
                            COM_PFR_RSN_CD,
                            status)
             VALUES
                            (pc_id,
                             v_rt_all_cols(i).party_id,
                             decode(v_rt_all_cols(i).product_brand,'LTB',2,'HLX',1,'HAL',1,'BOS',3,'VER',4,0),
                             v_rt_all_cols(i).sort_code,
                             'XXXX'||substr(trim(v_rt_all_cols(i).ACCOUNT_NUMBER),length(trim(v_rt_all_cols(i).ACCOUNT_NUMBER))-3,4),
                             v_rt_all_cols(i).EXT_PRD_ID_TX,
                             v_rt_all_cols(i).EXT_PRD_HLD_ID_TX,
                             v_rt_all_cols(i).EXT_SYS_ID,
                             v_rt_all_cols(i).EXT_PTY_ID_TX,
                             v_rt_all_cols(i).ACCOUNT_TYPE_CD,
                             v_rt_all_cols(i).COM_PFR_TYP_TX,
                             v_rt_all_cols(i).COM_PFR_OPT_TX,
                             v_rt_all_cols(i).COM_PFR_RSN_CD,
                             NULL);
                  vstep_no  := '4.3';
                  vtable_nm := 'after insert corres';
        else
              select COM_SEQ.nextval into id_val from dual;
                  vstep_no  := '6';
                  vtable_nm := 'before insertcomm';
          if (upper(v_rt_all_cols(i).event_type) = upper('REMINDER')) then
                vstep_no  := '6.01';
                  vtable_nm := 'after if insertcomm';
              insert into parent_tab
                 (ID ,
                 CTEM_CODE,
                 CHA_CODE,            
                 CT_CODE,                           
                 CONTACT_POINT_ID,             
                 SOURCE,
                 RECEIVED_DATE,                             
                 SEND_DATE,
                 RETRY_COUNT)
              values
                 (id_val,
                  lower(v_rt_all_cols(i).event_type), 
                  decode(v_rt_all_cols(i).product_brand,'LTB',2,'HLX',1,'HAL',1,'BOS',3,'VER',4,0),
                  'Email',
                  v_rt_all_cols(i).email_id,
                  'IADAREMINDER',
                  systimestamp,
                  systimestamp,
                  0);  
         else
                vstep_no  := '6.02';
                  vtable_nm := 'after else insertcomm';
              insert into parent_tab
                 (ID ,
                 CTEM_CODE,
                 CHA_CODE,            
                 CT_CODE,                           
                 CONTACT_POINT_ID,             
                 SOURCE,
                 RECEIVED_DATE,                             
                 SEND_DATE,
                 RETRY_COUNT)
              values
                 (id_val,
                  lower(v_rt_all_cols(i).event_type), 
                  decode(v_rt_all_cols(i).product_brand,'LTB',2,'HLX',1,'HAL',1,'BOS',3,'VER',4,0),
                  'Email',
                  v_rt_all_cols(i).email_id,
                  'CORRESPONDENCE',
                  systimestamp,
                  systimestamp,
                  0); 
            END if; 
                  vstep_no  := '6.11';
                  vtable_nm := 'before chop';
             if (v_rt_all_cols(i).ACCOUNT_NUMBER is not null) then 
                      v_rt_all_cols(i).ACCOUNT_NUMBER := 'XXXX'||substr(trim(v_rt_all_cols(i).ACCOUNT_NUMBER),length(trim(v_rt_all_cols(i).ACCOUNT_NUMBER))-3,4);
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)
              values
                (id_val,
                 'IB.Correspondence.AccountNumberMasked',
                 v_rt_all_cols(i).ACCOUNT_NUMBER);
             end if;
                  vstep_no  := '6.1';
                  vtable_nm := 'before stateday';
             if (v_rt_all_cols(i).crr_day is not null) then 
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)
              values
                (id_val,
                 --'IB.Correspondence.Date.Day',
                 'IB.Crsp.Date.Day',
                 v_rt_all_cols(i).crr_day);
             end if;
                  vstep_no  := '6.2';
                  vtable_nm := 'before statemth';
             if (v_rt_all_cols(i).crr_month is not null) then 
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)
              values
                (id_val,
                 --'IB.Correspondence.Date.Month',
                 'IB.Crsp.Date.Month',
                 v_rt_all_cols(i).crr_month);
             end if;
                  vstep_no  := '6.3';
                  vtable_nm := 'before stateyear';
             if (v_rt_all_cols(i).crr_year is not null) then 
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)
              values
                (id_val,
                 --'IB.Correspondence.Date.Year',
                 'IB.Crsp.Date.Year',
                 v_rt_all_cols(i).crr_year);
             end if;
                  vstep_no  := '7';
                  vtable_nm := 'before type';
               if (v_rt_all_cols(i).product_type is not null) then
                  insert into child_tab
                     (COM_ID,                                            
                     KEY,                                                                                                                                        
                     VALUE)
                  values
                    (id_val,
                     'IB.Product.ProductName',
                   v_rt_all_cols(i).product_type);
                end if;
                  vstep_no  := '9';
                  vtable_nm := 'before title';         
              if (trim(v_rt_all_cols(i).title) is not null) then
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE )
              values
                (id_val,
                 'IB.Customer.Title',
                 trim(v_rt_all_cols(i).title));
              end if;
                  vstep_no  := '10';
                  vtable_nm := 'before surname';
              if (v_rt_all_cols(i).surname is not null) then
                insert into child_tab
                   (COM_ID,                                            
                   KEY,                                                                                                                                          
                   VALUE)
                values
                  (id_val,
                  'IB.Customer.LastName',
                  v_rt_all_cols(i).surname);
              end if;
                            vstep_no  := '12';
                            vtable_nm := 'before postcd';
              if (trim(v_rt_all_cols(i).POSTCODE) is not null) then
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)                              
               values
                (id_val,
                 'IB.Customer.Addr.PostCodeMasked',
                  substr(replace(v_rt_all_cols(i).POSTCODE,' ',''),length(replace(v_rt_all_cols(i).POSTCODE,' ',''))-2,3));
              end if;
                            vstep_no  := '13';
                            vtable_nm := 'before subject';
              if (trim(v_rt_all_cols(i).SUBJECT) is not null) then
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)                              
               values
                (id_val,
                 'IB.Correspondence.Subject',
                  v_rt_all_cols(i).subject);
              end if;
                            vstep_no  := '14';
                            vtable_nm := 'before inactivity';
              if (trim(v_rt_all_cols(i).UNREAD_CORRES_PERIOD) is null or
                  trim(v_rt_all_cols(i).UNREAD_CORRES_PERIOD) = '3' or
                  trim(v_rt_all_cols(i).UNREAD_CORRES_PERIOD) = '6' or
                  trim(v_rt_all_cols(i).UNREAD_CORRES_PERIOD) = '9') then
              insert into child_tab
                 (COM_ID,                                            
                 KEY,                                                                                                                                            
                 VALUE)                              
               values
                (id_val,
                 'IB.Correspondence.Inactivity',
                  v_rt_all_cols(i).UNREAD_CORRES_PERIOD);
              end if;
                          vstep_no  := '14.1';
                          vtable_nm := 'after notfound';
        end if;
                          vstep_no  := '15';
                          vtable_nm := 'after notfound';
        END LOOP;
        end loop;
                          vstep_no  := '16';
                          vtable_nm := 'before closecur';
        CLOSE stg_cursor;
                          vstep_no  := '17';
                          vtable_nm := 'before commit';
        DELETE FROM table_stg;
      COMMIT;
                          vstep_no  := '18';
                          vtable_nm := 'after commit';
    EXCEPTION
    WHEN OTHERS THEN
      ROLLBACK;
      success_flag := 1;
      vsql_code := SQLCODE;
      vsql_errm := SUBSTR(sqlerrm,1,200);
      error_logging_pkg.inserterrorlog('samp',vsql_code,vsql_errm, vtable_nm,vstep_no);
      RAISE_APPLICATION_ERROR (-20011, 'samp '||vstep_no||' SQLERRM:'||SQLERRM);
    end;
    Thanks

    Its bit urgent
    NO - it is NOT urgent. Not to us.
    If you have an urgent problem you need to hire a consultant.
    I have a performance issue in the below code,
    Maybe you do and maybe you don't. How are we to really know? You haven't posted ANYTHING indicating that a performance issue exists. Please read the FAQ for how to post a tuning request and the info you need to provide. First and foremost you have to post SOMETHING that actually shows that a performance issue exists. Troubleshooting requires FACTS not just a subjective opinion.
    where i am trying to insert the data from table_stg into target_tab and in parent_tab tables and then to child tables via cursor with bulk collect .the target_tab and parent_tab are huge tables and have a row wise trigger enabled on it .the trigger is mandatory . This timetaken for this block to execute is 5000 seconds.Now my requirement is to reduce it to 5 to 10 mins.
    Personally I think 5000 seconds (about 1 hr 20 minutes) is very fast for processing 800 trillion rows of data into parent and child tables. Why do you think that is slow?
    Your code has several major flaws that need to be corrected before you can even determine what, if anything, needs to be tuned.
    This code has the EXIT statement at the beginning of the loop instead of at the end
        FETCH stg_cursor BULK COLLECT INTO v_rt_all_cols LIMIT limit_in;
                  vstep_no  := '4';
                  vtable_nm := 'after fetch';
    --EXIT WHEN v_rt_all_cols.COUNT = 0;
        EXIT WHEN stg_cursor%NOTFOUND;
    The correct place for the %NOTFOUND test when using BULK COLLECT is at the END of the loop; that is, the last statement in the loop.
    You can use a COUNT test at the start of the loop but ironically you have commented it out and have now done it wrong. Either move the NOTFOUND test to the end of the loop or remove it and uncomment the COUNT test.
    WHEN OTHERS THEN
      ROLLBACK;
    That basically says you don't even care what problem occurs or whether the problem is for a single record of your 10,000 in the collection. You pretty much just throw away any stack trace and substitute your own message.
    Your code also has NO exception handling for any of the individual steps or blocks of code.
    The code you posted also begs the question of why you are using NAME=VALUE pairs for child data rows? Why aren't you using a standard relational table for this data?
    As others have noted you are using slow-by-slow (row by row processing). Let's assume that PL/SQL, the bulk collect and row-by-row is actually necessary.
    Then you should be constructing the parent and child records into collections and then inserting them in BULK using FORALL.
    1. Create a collection for the new parent rows
    2. Create a collection for the new child rows
    3. For each set of LIMIT source row data
      a. empty the parent and child collections
      b. populate those collections with new parent/child data
      c. bulk insert the parent collection into the parent table
      d. bulk insert the child collection into the child table
    And unless you really want to either load EVERYTHING or abandon everything you should use bulk exception handling so that the clean data gets processed and only the dirty data gets rejected.

  • Using a link to trigger a delete action on form page?

    Hello,
    I have been unable to find an explanation about how to do this in the documentation, these forums or the old interakt forums.
    Is it possible to use a link to trigger the delete action on a form page?
    If so how is it done?
    Thanks in advance!

    Sorry Purple.. I know that there is a delete link that triggers the delete transaction on the form page..
    The question was if anybody knew if I am able to use a link to trigger that delete transaction (on the form page), much like a dynamic list has a link that will trigger the delete transaction on the form page.
    I don't want to use a dynamic list in this case though. :)
    Thanks anyways,
    Drew

  • Error while deploying the trigger

    Hi All,
    In the trigger given below I want to append the data from all the table columns , to convert the numeric data to string i am using to_char function , but when i try to deploy the trigger i am getting the error.
    What could be the problem here?
    Is there any alternate way to achieve the same??
    Trigger
    ==========================================================
    create or replace trigger emp_delete
    after delete
    on emp
    for each row
    begin
         insert into Event(EventId,TableName,Pkey,OldValues,NewValues,DateTime,ActionType) values
         (My_Event_ID_Seq.NEXTVAL ,'emp','EMPNO',
         TO_CHAR(:old.EMPNO) || TO_CHAR(:old.ENAME) ||
         TO_CHAR(:old.JOB) || TO_CHAR(:old.MGR) ||
         TO_CHAR(:old.HIREDATE) || TO_CHAR(:old.SAL) ||
         TO_CHAR(:old.COMM) || TO_CHAR(:old.DEPTNO),
         ' ',SYSDATE,'D');     
    end;
    Error
    ==========================================================
    LINE/COL ERROR
    3/2 PL/SQL: SQL Statement ignored
    5/25 PLS-00307: too many declarations of 'TO_CHAR' match this call
    SQL> help helpindex
    SP2-0172: No HELP available.

    Check you proxy settings. Disable them in your deployment tool / JDeveloper

  • :NEW cannot be used in After Delete Trigger ?

    Hi,
    Is there any way to get the :NW.value in the After delete trigger for each row. My requirement is audit log of the end user DML operations along with user Name (HERE THE USER IS NOT THE ORACLE USER, BECAUSE OF THE LARGE NUMBER OF END USERS WE ARE MAINTAINING ONE TABLE TO CREATE USER NAME & PASSWORD, WHEN THE USER LOGIN TO ORACLE FORM SCREEN, ASSIGN THE USER NAME TO GLOBAL VARIABLE) & Action Date.
    Here is my code for trigger - It is working fine with INSER & UPDATE but for DELETE User is NULL
    CREATE OR REPLACE TRIGGER Tgr_stud_det
    AFTER INSERT OR UPDATE OR DELETE ON student_details
    FOR EACH ROW
    DECLARE
    BEGIN
    IF Inserting THEN
    -------------INSERT VALUE---------------
    INSERT INTO Log_student_details
    (Seq,
    App_User,
    Action,
    Action_Date,
    stud_name,
    stud_age,
    stud_sex)
    VALUES
    (stud_sequence.NEXTVAL,
    :NEW.App_User,
    'INSERT',
    SYSDATE,
    :NEW.stud_name,
    :NEW.stud_age,
    :NEW.stud_sex);
    -------------DELETE VALUE---------------
    ELSIF Deleting THEN
    INSERT INTO Log_student_details
    (Seq,
    App_User,
    Action,
    Action_Date,
    Comment_Up,
    stud_name,
    stud_age,
    stud_sex)
    VALUES
    (stud_sequence.NEXTVAL,
    :OLD.App_User,
    'DELETE',
    SYSDATE,
    NULL,
    :OLD.stud_name,
    :OLD.stud_age,
    :OLD.stud_sex);
    ELSIF Updating THEN
    -------------UPDATE VALUE---------------
    INSERT INTO Log_student_details
    (Seq,
    App_User,
    Action,
    Action_Date,
    Comment_Up,
    stud_name,
    stud_age,
    stud_sex)
    VALUES
    (stud_sequence.NEXTVAL,
    :NEW.App_User,
    'UPDATE',
    SYSDATE,
    'NEW VALUE',
    :NEW.stud_name,
    :NEW.stud_age,
    :NEW.stud_sex);
    INSERT INTO Log_student_details
    (Seq,
    App_User,
    Action,
    Action_Date,
    Comment_Up,
    stud_name,
    stud_age,
    stud_sex)
    VALUES
    (stud_sequence.CURRVAL,
    :NEW.App_User,
    'UPDATE',
    SYSDATE,
    'OLD VALUE',
    :OLD.stud_name,
    :OLD.stud_age,
    :OLD.stud_sex);
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
    NULL;
    END Tgr_stud_det;
    Thanks in advance.

    Rizly,
    As i mentioned in the above post, you should remove the references of :old and :new when you are trying to use the global variables. These values are only significant when you the talk about the record in the table.
    For the scenario, you explained, your trigger would insert two records....The trigger would be fired twice.. once during the insert and once during the delete. The audit table will have two records indicating both the actions..
    Take a look at this example below...I am artificially manufacturing a user id in the package test_pkg and using that in the insert trigger. As i explained above, you dont need the :old and :new references because the user id is not a column in the table . hence the :old and :new references have no relevance.
    Also note that, for the delete, I use the :old value and for the insert, I use the :new value.
    for update, I assume you want to store the old record and hence used :old (you can of course use :new too..technically.).
    I don't have access to a forms environement, but the user id logic should be similar to what I described below.
    sql> create table t(
      2     id number,
      3     name varchar2(20)
      4  );
    Table created.
    sql> create table t_audit
      2     ( id number,
      3       name varchar2(20),
      4       action varchar2(20),
      5       user_id varchar2(20)
      6  );
    Table created.
    sql> create or replace package test_pkg as
      2      function get_user_id return varchar2;
      3  end test_pkg;
      4  /
    Package created.
    sql> create or replace package body test_pkg as
      2      function get_user_id return varchar2 is
      3      begin
      4          return 'USER' || to_char(sysdate,'HH24:MI');
      5      end get_user_id;
      6  end test_pkg;
      7  /
    Package body created.
      1  create or replace trigger trg_biud_t
      2     before insert or update or delete on t
      3     for each row
      4  begin
      5     if INSERTING then
      6        insert into t_audit values (:new.id, :new.name, 'INSERT',test_pkg.get_user_i
      7     elsif UPDATING then
      8        insert into t_audit values (:old.id, :old.name, 'UPDATE',test_pkg.get_user_i
      9     elsif DELETING then
    10        insert into t_audit values (:old.id, :old.name, 'DELETE',test_pkg.get_user_i
    11     end if;
    12* end;
    sql> /
    Trigger created.
    sql> select * from t;
    no rows selected
    sql> select * from t_audit;
    no rows selected
    sql> insert into t values (100, 'Rajesh');
    1 row created.
    sql> insert into t values (200,'Kumar');
    1 row created.
    sql> delete from t where id = 200;
    1 row deleted.
    sql> commit;
    Commit complete.
    sql> select * from t
      2  /
            ID NAME
           100 Rajesh
    sql> select * from t_audit;
            ID NAME                 ACTION               USER_ID
           100 Rajesh               INSERT               USER15:36
           200 Kumar                INSERT               USER15:36
           200 Kumar                DELETE               USER15:37

  • Processing LONG RAW in the trigger

    I'm currently using Oracle 7.3.4.x. I'd like to perform in the
    update trigger of LONG RAW column the copy of that value to
    another table. Since the :new and :old is prohibited in triggers
    and you cannot defined variables as LONG RAW data type in the
    trigger I couldn't work out any solution to this problem.
    Any one get any idea how to do that?
    Thanks,
    Mariusz.

    Hi!
    You will not be able to do "select * from ..." from a table with a LONG column. However you will be able to do a select successfully by using the individual column name(s). The other thing is, in order to see the full content of the LONG column you will have to do do "set long nnnnn" where nnnnn represents the maxumum length of the values in the LONG column.
    Hope that helps.
    null

  • I am trying to get my vi to trigger, not sure where to add the trigger

    I need a vi that can trigger using an analog rising edge (1V), then produces a square wave (any square wave will do for now), and then show the measurement of the waveform.  Attached is the code that I have made so far.  Not sure how to get a trigger attached, or where to place the trigger, onto what I have done so far.  Another question is where to have it triggered from, do I need to add another generate waveform to produce the trigger signal?
    Any help is appreciated!!
    -ncm
    Solved!
    Go to Solution.
    Attachments:
    Generate and Read Waveform.vi ‏39 KB

    Hi,
    You can place a DAQmx start trigger VI in the code at the top, between the DAQmx Timing and DAQmx write VIs, and then set the trigger type to "Analog Edge" and specify the channel to trigger from (in this case I think you would use the APFI line on your card).  Check out the 'Voltage - Continuous Output' Example'  if you need help implementing this in code, that example covers analog output with different types of triggering in a setup similar to yours.
    Matt Lee
    National Instruments
    Applications Engineer

  • Using to pass the current user while creating a procedure

    I have a .sql script that several people use to help set-up test beds but some users call the test procedures from a separate schema. The .sql creates a table (TABLE_A) and then a procedure that when run will create a trigger on a separate table (TABLE_B) that basically writes all info to TABLE_A. The problem is that if the .sql is run under schema SCOTT and then the procedure is run from schema JOE to create a trigger on JOE.TABLE_B, the trigger will try to write copy info to just TABLE_A instead of SCOTT.TABLE_A. My plan is to add a new input variable to the procedure for the schema where the procedure is located and set the default to the schema of the user running the .sql.
    I can't seem to figure out how to call the current user and then pass it to a procedure as a DEFAULT input variable. Any help would be greatly appreciated.

    OK, sadly, that did not work. What that provided to me was user that runs the procedure. If I run it as SCOTT it gives me SCOTT, but if I run as JOE, it gives me JOE.
    I created an example of what I am trying to do (it is all run in a .sql file). Let me know if this is a bad example....
    CREATE TABLE TABLE_A (
    tranid VARCHAR2(20) Primary Key,
    db_user varchar2(100) not null,
         old_val varchar2(100) not null,
    create or replace PROCEDURE TestBuild(OWN2 IN VARCHAR2, TNAME2 IN VARCHAR2, LOC2 IN VARCHAR2) IS
    OWN VARCHAR2(30);
    TNAME VARCHAR2(30);
    FNAME VARCHAR2(62);
    UNAME VARCHAR2(62);
    COL VARCHAR2(30);
    ST CHAR;
    CONS VARCHAR2(30);
    BEGIN
    OWN := UPPER(OWN2);
    TNAME := UPPER(TNAME2);
    FNAME := OWN||'.'||TNAME;
    UNAME := OWN||'_'||TNAME;
    FILE := SYS.UTL_FILE.FOPEN(LOC2,'TEST_Trig_'||UNAME||'.sql','w');
    SYS.UTL_FILE.PUT_LINE(FILE,'-- Test trigger start');
    SYS.UTL_FILE.PUT_LINE(FILE,'-- generated '||SYSDATE);
    SYS.UTL_FILE.NEW_LINE(FILE,1);
    -- The following trigger fires for EVERY row of each statement for
    -- the specified table.
    SYS.UTL_FILE.PUT_LINE(FILE,'CREATE OR REPLACE TRIGGER Test_trig_'||UNAME||' AFTER INSERT OR UPDATE OR DELETE ON '||FNAME||' ');
    SYS.UTL_FILE.PUT_LINE(FILE,' REFERENCING NEW as n OLD as o FOR EACH ROW');
    SYS.UTL_FILE.PUT_LINE(FILE,' DECLARE');
    SYS.UTL_FILE.PUT_LINE(FILE,' dmltype CHAR(1);');
    SYS.UTL_FILE.PUT_LINE(FILE,' tpid VARCHAR2(30);');
    SYS.UTL_FILE.PUT_LINE(FILE,' BEGIN');
    SYS.UTL_FILE.PUT_LINE(FILE,' tpid := SYS.DBMS_TRANSACTION.LOCAL_TRANSACTION_ID();');
    SYS.UTL_FILE.PUT_LINE(FILE,' IF INSERTING THEN dmltype := ''I'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' ELSIF UPDATING THEN dmltype := ''U'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' ELSIF DELETING THEN dmltype := ''D'';');
    SYS.UTL_FILE.PUT_LINE(FILE,' END IF;');
    SYS.UTL_FILE.PUT_LINE(FILE,' BEGIN');
    SYS.UTL_FILE.PUT_LINE(FILE,' INSERT INTO TABLE_A VALUES (tpid,User,:o.col1);');
    SYS.UTL_FILE.PUT_LINE(FILE,' END IF;');
    SYS.UTL_FILE.PUT_LINE(FILE,' EXCEPTION WHEN already_there THEN NULL;');
    SYS.UTL_FILE.PUT_LINE(FILE,' END;');
    SYS.UTL_FILE.PUT_LINE(FILE,' END;');
    SYS.UTL_FILE.PUT_LINE(FILE,'/');
    SYS.UTL_FILE.PUT_LINE(FILE,'show errors');
    SYS.UTL_FILE.NEW_LINE(FILE,1);
    SYS.UTL_FILE.FCLOSE_ALL;
    dbms_output.put_line('Script for table ['||FNAME||'] created. Now run it in sqlplus. ');
    END;

  • Call a Form using Webutil from the Menu loose focus on the applet

    Hello,
    I have the following problem:
    When calling a form using webutil from the menu the focus on the applet (I mean the Forms Application window) is lost and I have to click on the window to get back the focus on the application.
    Any advice ?
    Env: Forms 9i / Webutil 1.06
    Rgds,
    Philippe

    Try to use the NO_HIDE parameter in the CALL_FORM() built-in.
    Call_Form( 'the_form', NO_HIDE ) ;Or maybe, in the[b] When-New-Form-Instance trigger of the called form, return the focus to the calling form
    Go_Form( Get_Application_Property( CALLING_FORM ) ) ;Francois

Maybe you are looking for

  • How do i get my file back when it seems to have been lost or replaced?

    My Mac froze and then shut down so i started it up again to find my indesign file had been replaced with a much older file with practically no work on. I closed the document and tried opening it again but it now will just open as a much older file. I

  • Can't edit smart album in iPhoto '11

    The help files for iPhoto say to select a smart album in the source list and then select it item 'edit smart album' in the file menu.  But there is no such item in the File menu. When I right-click on the album, the option 'edit smart album' is dimme

  • Gst-register and gst-plugins-gnomevfs [Solved]

    One of the dependencies for rhythmbox, gst-plugins-gnomevfs-0.8.10-1, causes gst-register to fail with message: (process:8613): libgnomevfs-WARNING **: Cannot load module `/opt/gnome/lib/gnome-vfs-2.0/modules/libhttp.so' (libdb-4.3.so: cannot open sh

  • Writeback error

    Hi All, Thanks a lot for your support. I have trying to implement writeback feature in obiee. I am using SH schema. In the fact table sales I have created a column Sales_Quota with Char field size 5. Whenever I am trying to implement witeback then I

  • How do I upgrade CS5 12.0.5 to 12.1

    I'm having trouble upgrading from CS5 64 bit 12.0.5 to 12.1.  I have a current windows 7 OS.  The downlod goes okay, then I unzip the files, stop the antivirus program, and click on the exe file as administrator... it all goes well, then after clicki