[Block based on From Query] On-Lock Trigger

Hi,
I have a block based on an Emp_Dept view.
I manage updating and inserting with the On-Update and On-Insert triggers.
I wonder if I have to code this in the On-Lock trigger:
message( 'Oracle locks' );
lock table emp in share row exclusive mode;
If I want Oracle to prevent another user from updating the same row I'm updating.
Thanks for your help.
JBM

This is the code we use to lock specific records in ON-LOCK:
CURSOR crLock IS
  RESOURCE_BUSY EXCEPTION;
  PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -54);
  SELECT ID
    FROM THE_BASE_TABLE_OF_THE_VIEW
   WHERE ID=:BLOCK.ID FOR UPDATE OF ID NOWAIT;
  nDummy NUMBER;
BEGIN
  OPEN crLock;
  FETCH crLock INTO nDummy;
  CLOSE crLock;
EXCEPTION
  WHEN RESOURCE_BUSY THEN
    message('record cannot be locked');
    RAISE FORM_TRIGGER_FIALURE;
END;

Similar Messages

  • Update detail block based on FROM QUERY

    I have 2 blocks in master-detail relation. The master is based on a table, the detail on from query. The Insert works fine... but whenever i want to update any field from the detail block, the items (text, lists, whatever) don't allow any updating.
    Is there some workaround?
    Thank you for the help
    NR

    RTM on blocks based on from-query.
    If I recall well, it says that you shoud write the DML code in on-insert, on-update and on-delete triggers - and, anyway, if I do not remember well the manual, that's what I do.
    So, the on-insert trigger should have an insert into <my_dml_table>...
    The on-update trigger sould have an update <my_dml_table>... where ... And there's a thing: you may have the rowid of <my_dml_query> fetched - which would be the best - or use some primary key for that table for update (not so good performance).
    The on-delete trigger somewhat like the on-update trigger.
    Moreover, I believe it would be better to have procedures for on-insert, on-update and on-delete grouped in one package in the database - again, this is what I use to do.

  • Block based on from clause query

    Hi all...
    I am using forms 10g .....
    When I wanted block based on from clause query...
    I used this query ( SELECT * FROM exit INNER JOIN enter ON exit.ent_num = enter.ent_num where enter.depart=1)...
    When I run form .....
    frm-40505 oracle error unable to perform query
    Thank you
    Edited by: osa3_12 on Dec 10, 2009 4:33 AM

    hi
    try something like this.
      1* select empno,ename from emp where empno=empno order by 1
    SQL> /
         EMPNO ENAME
          7000 Sarah
          7369 SMITH
          7499 ALLEN
          7521 WARD
          7566 JONES
          7654 MARTIN
          7698 BLAKE
          7782 CLARK
          7788 SCOTT
          7839 KING
          7844 TURNER
         EMPNO ENAME
          7876 ADAMS
          7900 JAMES
          7902 FORD
          7934 MILLER
          8898 Sheela
    16 rows selected.
      1* select empno,ename from emp where empno=7000
    SQL> /
         EMPNO ENAME
          7000 Sarah
    SQL> sarah

  • Block based on "From clause query" and substitution variable

    Hi Folks,
    I have a "From clause query" block type, which is based on query that uses a substitution variable (:BLOCK.COLUMN) from previous block. When I run a query, then I obtain an error: ORA-01008: not all variables bound.
    My query looks like:
    select seq_no, prod_code, descr, curr_code,
           max(decode(sched_type_code,'ROLLOVER',amt,0)) OUTSTD_DRAW,
           max(decode(sched_type_code,'INTCHG',amt,decode(sched_type_code,'FEEREC',amt,0))) OUTSTD_INTEREST_FEE
    from
        select r.fac_no, r.prod_code, f.descr, r.prod_seq_no seq_no, r.curr_code, r.sched_type_code,sum(nvl(rep_amt,0)) amt
          from repay_scheds r,
               fac_prods f
         where r.fac_no = f.fac_no
           and r.prod_code = f.prd_code
           and r.prod_seq_no = f.seq_no
           and r.fac_no = :B2.FAC_NO
           and r.trans_ref_from is not null
           and r.status         <> 'P'
        group by r.fac_no, r.prod_code, f.descr, r.prod_seq_no, r.curr_code, r.sched_type_code 
    group by seq_no, prod_code, descr, curr_code
    having max(decode(sched_type_code,'ROLLOVER',amt,0)) >0 or max(decode(sched_type_code,'INTCHG',amt,decode(sched_type_code,'FEEREC',amt,0))) > 0Once I replace that substitution variable in query condition with some exact test number then it works fine.
    select seq_no, prod_code, descr, curr_code,
           max(decode(sched_type_code,'ROLLOVER',amt,0)) OUTSTD_DRAW,
           max(decode(sched_type_code,'INTCHG',amt,decode(sched_type_code,'FEEREC',amt,0))) OUTSTD_INTEREST_FEE
    from
        select r.fac_no, r.prod_code, f.descr, r.prod_seq_no seq_no, r.curr_code, r.sched_type_code,sum(nvl(rep_amt,0)) amt
          from repay_scheds r,
               fac_prods f
         where r.fac_no = f.fac_no
           and r.prod_code = f.prd_code
           and r.prod_seq_no = f.seq_no
           and r.fac_no = 2012500
           and r.trans_ref_from is not null
           and r.status         <> 'P'
        group by r.fac_no, r.prod_code, f.descr, r.prod_seq_no, r.curr_code, r.sched_type_code 
    group by seq_no, prod_code, descr, curr_code
    having max(decode(sched_type_code,'ROLLOVER',amt,0)) >0 or max(decode(sched_type_code,'INTCHG',amt,decode(sched_type_code,'FEEREC',amt,0))) > 0How can I use substitution variable within query for "From clause query" block type? Or any other way how to get the same result?
    Thanks for your reply.
    Tomas

    I have a solution:
    Before entering block I'm calling function, that populates my block:
    PROCEDURE POP_<<MY_BLOCK>>_BLOCK IS
      query_txt varchar2(2000);
    BEGIN
       query_txt := '(select seq_no, prod_code, descr, curr_code,
                            max(decode(sched_type_code,''ROLLOVER'',amt,0)) OUTSTD_DRAW,
                            max(decode(sched_type_code,''INTCHG'',amt,decode(sched_type_code,''FEEREC'',amt,0))) OUTSTD_INTEREST_FEE
                                                  from
                                                     select r.fac_no, r.prod_code, f.descr, r.prod_seq_no seq_no, r.curr_code, r.sched_type_code,sum(nvl(rep_amt,0)) amt
                                                       from repay_scheds r,
                                                            fac_prods f
                                                      where r.fac_no = f.fac_no
                                                        and r.prod_code = f.prd_code
                                                        and r.prod_seq_no = f.seq_no
                                                        and r.fac_no = '||:B2.FAC_NO||'
                                                        and r.trans_ref_from is not null
                                                        and r.status         <> ''P''
                                                     group by r.fac_no, r.prod_code, f.descr, r.prod_seq_no, r.curr_code, r.sched_type_code 
                                                 group by seq_no, prod_code, descr, curr_code
                                                 having max(decode(sched_type_code,''ROLLOVER'',amt,0)) >0 or max(decode(sched_type_code,''INTCHG'',amt,decode(sched_type_code,''FEEREC'',amt,0))) > 0)';
       Go_Block('<<MY_BLOCK>>' );
       Clear_Block ;
       Set_Block_Property( '<<MY_BLOCK>>', QUERY_DATA_SOURCE_NAME, query_txt) ;
       -- populate my  block --
       Execute_Query ;
    END;Thanks,
    Tomas

  • Need to execute block based on from clause

    hi all
    i've a block that is based on a from clause data source , & i've button in the previous block that should execute this one
    when i wrote execute_query in that button , it got error that this function can't be done here
    so how can i execute this block through the button.......
    thxxxxxxxxxx

    Hi miro;
    Please check [this search|http://www.google.com.tr/search?hl=tr&q=execute_query%2Bbutton&meta=&aq=f&oq=]
    Hope it helps
    Regard
    Helios

  • On-lock Trigger not working properly.

    Hi Everyone,
    I need to use on-lock trigger to satisfy the requirement.
    The requirement is - for a given supplier name and supplier profile the form should be locked.Normally forms locks row by row. But my requirement is if any user doing some changes on a specific supplier and supplier profile then no other user can change for that supplier and supplier profile. If any user opens that then we need to show that it has been locked by some other user.
    But the 2nd user can open the same form for some other supplier and supplier profile.
    I need to write an on-lock trigger.
    Can you please suggest what should I write in on-lock trigger ?
    let table name is SUPPLIER  sp.
    THEN
    sp.supplier_name = :blk1.supplier_name
    and sp.supplier_prof = :blk1.supplier_prof
    The above condition should be locked.
    Please help me out.

    Ok, so whenever you select a new supplier/profile in your blk1, you want to lock that supplier/profile.
    What you could do:
    1. lock the supplier immediately after the selection. I guess your block blk1 is not a db-block, so you would ad the locking at the end of your selection-procedure
    2. lock the supplier as soon as you start editing one of the country-rows, here you could use the ON-LOCK-trigger.
    An example of how the Locking-code looks is here Re: [Block based on From Query] On-Lock Trigger
    You have to do some additional steps, in the exception case (lock failed) you have to disable the whole county-block (with using SET_BLOCK_PROPERTY)
    Hope this helps

  • Form blows up when clicked in data block using a FROM clause query

    Hi,
    I have a form that has two blocks. The detail block is based on a "FROM query clause" in the 'Query Data Source Type' in the block Properties.
    I have a simple select in the 'Query Data Source Name'.
    I made sure the select is enclosed in parenthesis and the alias names in the SELECT are the same as the ITEMS defined in the block
    The data needs to be displayed in a tabular fashion.
    When I run the form, the data is displayed correctly..but when I click the mouse on any item of this block or try to scroll down, everything just blows up and it closes my form.
    I have made sure both blocks have the same properties. But, this seems to happen no matter what.
    Any help in regard is greatly appreciated.
    Thanks much,
    Vijji

    This is how I set the relationship for the detail block say BLOCK2.
    1. I first do this:
    Database Data Block = YES
    Query Allowed = YES
    Query Data Source Type = FROM clause query Query Data Source Name = ( select jio.order_header_id order_header_id, jii.item_code item_code, SUM(jii.item_qty) item_qty from joe_indv_items jii, joe_indv_orders jio where jii.indv_order_id = jio.indv_order_id group by jio.order_header_id, jii.item_code )
    The master and detail need to be tied by the order_header_id which I can get from the header block.
    2. In the WHEN-NEW_BLOCK-INSTANCE trigger for BLOCK2, I wrote the following where I dynamically pass the order_header_id:
    DECLARE
    q varchar2(1000);
    BEGIN
         q := '(SELECT jio.order_header_id order_header_id,
         jii.item_code item_code,
         SUM(jii.item_qty) item_qty
         FROM joe_indv_items jii, joe_indv_orders jio
         WHERE jio.order_header_id = ' || :HEADERS.order_header_id||'
         AND jii.indv_order_id = jio.indv_order_id
         GROUP BY jio.order_header_id, jii.item_code )';
         CLEAR_BLOCK;
    SET_BLOCK_PROPERTY('BLOCK1', QUERY_DATA_SOURCE_NAME, q);
    EXECUTE_QUERY;
    END;
    I am not sure if I should write the exact select statement in the Query Data Source Name or not.
    Please advice.
    Thanks much,
    Vijji

  • Query on Data Block based on View

    Hi,
    I am new to forms and am trying to modify an existing form which currently works in the following way :
    The same form is used for insert/updates/queries.
    The data block is based on a table and a post query trigger is written which updates the other text items on the canvas(which come from different tables) based on the values returned by the data block. Since the query functionality is based only on the table, you cannot query on the other items that are on the canvas. I need to make the query work on the other items that come from different tables.
    I created a view which joins all the tables but when I query although it returns the right record I get an error message " Cannot insert into or update view"
    I'm not sure what the best way to resolve this is ?
    Any suggestions ?
    Thanks
    Preeti

    Thanks for the replies.
    I created an updateable view and an instead of trigger. The Form is now queryable on all fields and the insert to the table works beautifully.
    However, now I'm getting an error on Update. Updating any column on the form results in a
    ORA-01733: virtual column not allowed here
    FRM-40501: ORACLE error: unable to reserve record for update or delete.
    The code for the view is :
    select a.*,
    B.vendor_name as Supplier_name,
         'PRE' AS TO_OWNER,
         C.vendor_site_code as supplier_site,
         ARCH.vendor_name AS Architect,
         p.segment1 as Project,
         ph.segment1 as PO_number,
         decode(a.interface_status,'I','Interfaced', 'U', 'UnInterfaced',
         'P', 'Partial',null) Interface_display_status,
         decode(a.approval_status,'A','Approved', 'P', 'Partial',
         'R', 'Rejected', 'U','Unapproved',null) Approval_display_status
    from idc_aia_g702 a, po_vendors b,
    po_vendor_sites_all C,
    PO_VENDORS ARCH,
    pa_projects_all p,
    po_headers_all ph
    where b.vendor_id = a.vendor_id
    AND A.vendor_site_Id (+) = C.vendor_site_id
    AND A.VIA_ARCHITECT_VENDOR_ID = ARCH.VENDOR_ID (+)
    and a.project_id = p.project_id
    and a.po_header_id = ph.po_header_id;
    I know I have to do something on either the data block property palette or the individual item property palette and clicking on any field within the form in order to update it results in the error mentioned above.
    Shd I have all the item props as Query Only set to Yes ? or the ones for Table A as Query Only set to N and the other table columns as Y ?
    Thanks
    Preeti

  • Query a database block based on a non-database block

    hi everybody
    can anybody help me as how to query a database block based on a non-database block, without a master-detail relationship?
    i have a block : date_input which contains a non-database item: start_date
    another database block (event_block)containing details of an event
    i have to input a date in the start_date and query the event_block
    in wich trigger should i insert the code?
    thanks

    If you are trying to query your database block (event_block) using the value from start_date in your non-database block, then you can set the Where clause in the database block using:
    SET_BLOCK_PROPERTY ('event_block', DEFAULT_WHERE, 'your where clause that includes start_date');
    Place this statement in a trigger that is executed prior to the block being queried.

  • Is it possible to delete data from a block based on a view?

    I have a data block based on a view. I have set the delete allowed property to 'yes' using the object navigator, have set the database permission to allow delete, done a search through all the code to see where the delete_allowed property on the block may be reset in some trigger yet cannot delete records from the block.
    Any ideas?

    There are at least two/three ways to do this...
    Put an on-delete trigger on the block of the view with code something like this...
    delete from mytable where mytable_id = :myblock.mytable_id;
    ...or...
    dont do the above and add an instead of trigger to the view in the database. The instead of trigger intercepts the delete statement that would fail and executes code that you write in the trigger to go delete in mytable "instead of" the view.
    ... or...
    if you want to base a block on a procedure.. See this thread... Notice the metalink id in the thread..
    Re: Data block based on a procedure..
    Message was edited by:
    Mark Reichman

  • Populating called block based on criteria from previous block

    i have a form where the query is based on the zipcode provided. I have a button within block a that calls another block b to display all records with that particular zipcode. I want the display on block b to show only the records for the specified zipcode. Please help and tell me how do I make this happen?

    - In the WHERE-Clause-property of block b enter :
    :BLOCK_A.ZIP_CODE
    - Put a button next to Zip-Code of Block a
    in the WHEN-BUTTON-PRESSED trigger enter :
    GO_BLOCK('BLOCK B');
    EXECUTE_QUERY;
    Another option would be to use a relation between both blocks ...

  • How to execute the query for a block based on the parameter

    Hi All,
    Good evening.
    i have requirement where i need to display the data in one block based on the selected items.
    the scenario is like this...there are 2 LOV's and one apply button and one external region on the form.
    so when u select the lov values and click on apply button the query should execute based on this 2 lov values.
    i am not getting how to achieve this..i am very new to oracle forms..
    Please Help..
    Thanks
    Bharat
    please help..it is urgent..
    thanks
    bharat
    Edited by: Bharat on Jan 31, 2012 5:19 AM

    Bharat wrote:
    Hi All,
    Good evening.
    i have requirement where i need to display the data in one block based on the selected items.
    the scenario is like this...there are 2 LOV's and one apply button and one external region on the form.
    so when u select the lov values and click on apply button the query should execute based on this 2 lov values.
    i am not getting how to achieve this..i am very new to oracle forms..Another way you can do this. Create a lov and don't assign it to any column just one return item (should be id).
    Now create a button may be your "apply button" write two trigger when-button-press and when-mouse-click.
    at When -Button-Press trigger, change the block state to 'ENTER-QUERY' and at when-mouse-click show the LOV and then write execute_query.
    Hope this will help you.
    If someone's response is helpful or correct, please mark it accordingly.

  • Problem in block based Query

    Respected Guru's
    I have a problem eith block bassed query.i have already used this block based query and it is working too.
    But here i am facing the the problem.why becuz i have used a global variable to pass value for execute it.
    and used 'set_block_property' to execute this query ..
    go_block('block name ')
    execute_query;
    But it si showing unable to perform the query..
    How i do this?? plez help me out...

    Dear...........
    There are some possible reasons.
    1- The items that are in data block , there is some field data is not database field and you set the property of this item is
    "Data Base Item" = 'Yes' , means this field is not in table.
    2- user right problem
    3- see the block property where set the property QUERY = NO\
    THX.

  • I have a carillon 25 keyboard (bad choice, I know) and I can't get it to communicate with my mac at all! I'm running logic pro 9 and reason 5. I get signal in from my M Audio trigger finger so I know it isnt an entirely mac based problem. Thanks!!!

    I have a carillon 25 keyboard (bad choice, I know) and I can't get it to communicate with my mac at all! I'm running logic pro 9 and reason 5. I get signal in from my M Audio trigger finger so I know it isnt an entirely mac based problem. Thanks!!!

    Well, how have to determined no signal is being recieved to your mac?
    Have you got something that shows the actual signal? Or have you just been trying to control a VST? What software are you using by the way?
    I personnally went with a AKAI MPK25, because it's made already mapped for logic & ableton etc, so it just makes things incredibly easy.
    I would suggest you return it if you can as a dead unit & perhaps look at something else a bit easier?
    Otherwise, if you just want to get this working we can have a look a bit deeper.
    And driver? OS X driver?

  • ORA-01762: vopdrv: view query block not in FROM ????

    Hi All
    any one aware of the error.
    ORA-01762: vopdrv: view query block not in FROM
    Please reply back.

    ORA-01762:vopdrv: view query block not in FROM
    Cause:This is an internal error message not normally issued.
    Action:Contact Oracle Support Services.
    Edited by: Karthick_Arp on Sep 23, 2008 11:01 PM

Maybe you are looking for

  • How to create Roles in UME (ABAP+JAVA stack)

    Hi, I have created roles earlier on JAVA stack alone. However, this time I am working on JAVA+ABAP stack. When I am trying to create role in UME, I am getting only two tabs: General Information Assigned Groups I am not getting Assinged Actions tab he

  • Need to upload a bill in pdf format to be viewed in biller direct screen

    Well requirement is to view a bill(invoice) from the given format to pdf format on biller direct screen(UCES SCREEN), a web portal. Now ,first i have to change the invoice from its current format to pdf ,and Secondly,I have to send it to the web port

  • Can QT 7 pro isolate audio from combined audio/video tracks?

    I just upgraded to Pro to try to convert small video clips (.mov files) taken on an HP digital camera into an iMovie-compatible format- they will play fine in QT (both audio and video), but there is no separate audio track. No matter what format I sa

  • How to get the option of 'Ship to Party' in PF of VA15 Inquiries lists

    Hi, I want to include the option of SH partner function in VA15, Inquiries list when I click the Partner functions push button. Can any one suggest the possibility? Now we can only see the SP (Sold to Party) and ER (Employee responsible)

  • Time Machine - backup size seems wrong

    I just started my first Time Machine backup. I am doing to to an external USB drive. My MAC drive shows 27 GB used. I have a 60gb boot camp partition but I don't think that comes in to play here. The backup status shows xxx-of 37gb backed up. What's