Session State "Status"

I was tickled pink -- now you know I'm being facetious -- to see there was documentation on Session State Status.  (Gotta love all those "S".)
http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21674/concepts_ses.htm
The session states are: Inserted, Updated and Reset.  Isn't that fantastic!  And probably even correct.  But ...  Wait for it ...!  Wait for it ...!
Ahhh!  I can't find any Oracle APEX documentation explaining: Inserted / Updated / Reset!   What does "inserted" mean?   How is "updated" different?   "Reset" "how"?  Reset to "what"?
The answer(s) may be obvious ... if you already know it.  The rest of us can only wonder, I suppose. 
So, are the definitions documented somewhere?  If it's in a blog, I can't access blogs from work but I can when I get home tonight.
Thanks for reading,
Howard

For a given page or application item:
Inserted - The value is stored in the session state table for the first time in the session.
Updated - The value that was already in the session state table acquires a new value.
Reset - The value that was already in the session state table is changed to null by way of a clear-cache event.
Scott

Similar Messages

  • How to tell if a user is issuing 'alter session statements'

    When I run 'alter session' from sqlplus in my schema, this does not get parsed and go to v$sql or show up in v$open_cursor. I have a user that is running queries from informatica. He says he is passing alter session statements through informatica, I want to see if they actually get there. The person is not real versed in oracle and I don't know informatica.
    i cant turn on trace cause he connects and disconnects and this would run immediately, I am not in a position to turn on system level tracing, add a trigger, or turn on auditing (not allowed).
    anyway to tell from a data dictionary view or something like that if these were issued by a given session? The queries run for a few minutes, so I have a bit before his session disconnects to query the data. I can't get him to change his code to stay connected. Is there a view that shows parameter changes for a given session?
    oracle: 10.2.0.5
    4 alter session commands are:
    Alter session set sort_area_size=999999999;
    Alter session set hash_area_size=999999999;
    Alter session set db_file_multiblock_read_count = 128;
    alter session enable parallel dml;
    Edited by: Guess2 on Jul 17, 2012 12:49 PM

    i cant turn on trace cause he connects and disconnects and this would run immediately, I am not in a position to turn on system level tracing, add a trigger, or turn on auditing (not allowed). If Informatica connects to Oracle via network, capturing TCP/IP traffic and mining in it may be your last resort.
    you can get session's PDML status from
    select pdml_status from v$session;
    i cant turn on trace cause he connects and disconnects and this would run immediatelythis contradicts to your following statement
    The queries run for a few minutes, so I have a bit before his session disconnects to query the data.
    I can't get him to change his code to stay connected. Informatica should have debug. Ask him if he can go step by step.
    Edited by: user11181920 on Jul 17, 2012 5:53 PM

  • Detecting change to session state

    Apex 4.0.2
    Say I have a form page with a bunch of items. An On Load process populates them using SELECT...INTO. When the page is submitted, is there a way I can identify which page items have changed so they can be recorded in a database table. A generic solution instead of the brute-force way of duplicating all page items as hidden items and comparing values during processing.
    When a page is run in debug mode, I see messages like Saving same value P1_FOO or when viewing session state using the Dev toolbar, there is a status column with Inserted or Updated so it would appear that the Apex engine does track changes to page items beteween the time they are rendered and processed.
    Any ideas? Thanks

    Tony & Jari - Yes, using collections would seem like the best option. It is not as difficult as I had imagined. Something like
    apex_collection.create_or_truncate_collection('FORM_DATA');
    for c1 in (select ... from apex_application_page_items
    where application_id=:APP_ID and page_id=:APP_PAGE_ID and item_name in (...))
    loop
      apex_collection.add_member('FORM_DATA',c1.item_name,v(c1.item_name));
    end loop; can be used to populate the collection in a On Load process.
    An After Submit process would compare v('item_name') to the corresponding value in the collection and do what it needs to do.
    John - Thanks, that would work too I guess.
    Thanks all

  • ??? On Session State

    Background info:
    I have a field that could have two different types of input, one would be numeric (such as a PK) the other input to it would be text. To ensure the Automated Row Fetch always pulls the PK properly I am using a computation ON LOAD to turn the text into numeric so that when the Automatic Page Load runs it will always pull from the database based on the PK.
    This part is working properly the problem is that I have an item that is a select list and it unforunately has an dynamic LOV with a query of select a,b from table_xyz where value = :session_state_of_pk
    This is causing me a problem because it is referencing the "text value" and not the numeric value. Even though when I change my page view to "Events" the page rendering shows computations before Items. I even did a Pl/sql process ON LOAD to insert the :session_state value to a debug table.
    So my question is ... If the pl/sql on load process is holding the correct value then why is the LOV of a page item not using the correct value??
    This is the error I get on the page Item that is an LOV:Error: ORA-01722: invalid number performing List of Values query

    Vikas, I have done this and here are the results:
    .01: S H O W: application="110" page="103" workspace="" request="" session="6865688852817169"
    0.01: Language derived from: FLOW_PRIMARY_LANGUAGE, current browser language: en-us
    0.01: alter session set nls_language="AMERICAN"
    0.01: alter session set nls_territory="AMERICA"
    0.01: NLS: CSV charset=WE8MSWIN1252
    0.02: ...NLS: Set Decimal separator="."
    0.02: ...NLS: Set NLS Group separator=","
    0.02: ...NLS: Set date format="DD-MON-RR"
    0.02: ...Setting session time_zone to dbtimezone
    0.02: NLS: Language=en-us
    0.02: Application 110, Authentication: CUSTOM2, Page Template: 724212235889446
    0.02: ...Supplied session ID can be used
    0.02: ...Application session: 6865688852817169, user=JRP22
    0.02: ...Determine if user "JRP22" workspace "1786101047996118" can develop application "110" in workspace "1786101047996118"
    0.03: Session: Fetch session header information
    <b>0.03: Saving g_arg_names=P103_IP_ID and g_arg_values=077.243
    0.03: ...Session State: Save Item "P103_IP_ID" newValue="077.243" </b<"escape_on_input="N"
    0.03: ...Metadata: Fetch page attributes for application 110, page 103
    0.03: Fetch session state from database
    0.04: Branch point: BEFORE_HEADER
    0.04: Fetch application meta data
    0.04: Authorization Check: "6961000503551770" User: "JRP22" Component: "PAGE"
    0.06: Computation point: BEFORE_HEADER
    <b>0.06: ...Perform computation of item: P103_IP_ID, type=QUERY
    0.06: ...P103_IP_ID=select ip_id from IP where IP = :P103_IP_ID;
    0.06: ...Session State: Saved Item "P103_IP_ID" New Value="32"
    0.06: Processing point: BEFORE_HEADER
    0.06: ...Process "TEST DB INSERT SESSION STATE P103_IP_ID": PLSQL (BEFORE_HEADER) insert into t (col1,col2,tstamp) values ('p395',:p103_ip_id,systimestamp);</b>
    0.08: Show page template header
    0.09: Computation point: AFTER_HEADER
    0.09: Processing point: AFTER_HEADER
    <b>0.09: ...Process "Fetch Row for IP": DML_FETCH_ROW (AFTER_HEADER) F|#OWNER#:IP:P103_IP_ID:IP_ID
    </b>0.10: ...Process "Fetch DNS_NAME To Buffer": PLSQL (AFTER_HEADER) :P103_DNS_NAME_BUFFER := :P103_DNS_NAME;
    0.11: ...Session State: Save Item "P103_DNS_NAME_BUFFER" newValue="3657" "escape_on_input="N"
    0.11: ...Process "Get Next or Previous Primary Key Value": GET_NEXT_OR_PREV_PK (AFTER_HEADER) #OWNER#:IP:IP_ID::IP::P103_IP_ID:P103_IP_ID_NEXT:P103_IP_ID_PREV::::P103_IP_ID_COUNT:
    0.13: ...Session State: Save Item "P103_IP_ID_NEXT" newValue="33" "escape_on_input="N"
    0.13: ...Session State: Save Item "P103_IP_ID_PREV" newValue="31" "escape_on_input="N"
    0.14: ...Session State: Save Item "P103_IP_ID_COUNT" newValue="32 of 3434" "escape_on_input="N"
    0.14: ...Process "Fetch MAC_ADDRESS": PLSQL (AFTER_HEADER) select mac_address into :P103_MAC_ADDRESS from mac_address where IP_ID = :P103_IP_ID;
    0.15: ...Session State: Save Item "P103_MAC_ADDRESS" newValue="00-16-3G-33-25-33" "escape_on_input="Y"
    0.15: ...Process "Fetch Container_Type": PLSQL (AFTER_HEADER) select container_type into :P103_CONTAINER_TYPE from container_type where container_type_id = :P103_CONTAINER_TYPE_ID;
    0.16: ...Session State: Save Item "P103_CONTAINER_TYPE" newValue="BASE_UNIT" "escape_on_input="Y"
    0.16: ...Process "Populate Hidden Assign value": PLSQL (AFTER_HEADER) :P103_ASSIGNED_BUFFER := :P103_ASSIGNED;
    0.16: ...Session State: Save Item "P103_ASSIGNED_BUFFER" newValue="Y" "escape_on_input="N"
    0.16: Authorization Check: "4769021032313739" User: "JRP22" Component: "tab"
    From Session State after the page has loaded:
    Application Page Item Name Display Item Value Status
    110 103 P103_IP_ID Hidden 32 U
    Vikas: From the debug info you can the value comes in with the the IP ( I have removed the first two octets from the debug information) "Saving g_arg_names=P103_IP_ID and g_arg_values=077.243"
    A few steps later a computation is performed and the IP is chagned to an IP_ID which the value is 32, this is correct at this point.. Following that there is a pl/sql insert of :P103_IP_ID and that value is 32 inside the db table.
    Here is what it looks like on the screen:
    <b>Any ideas why the Select List LOV does not like this value?</b>
    Here is the actual LOV query:
    select dns_name,dns_name_id from dns_name where ip_id = :p103_ip_id
    Message was edited by:
    Justin P

  • Session in status active started two hours ago is not in v$session_longops

    I have a session with status active. This session starts two hours ago.
    but if I query the v$session_longops to see how long I have to wait for that session I don't see it.
    And if I execute:
    execute dbms_system.SET_SQL_TRACE_IN_SESSION(429,15706,true);
    to trace the session
    oracle doesn't generate the trace file.
    Does someone know why?

    But since the OP stated the status = ACTIVE then there should be an active query. This is where the full Oracle version is important. Depending on the version if the active code is pl/sql then the pl/sql will not show when you check the v$session.sql_address and there have been issues with v$session_longops also.
    But just because a session has been connected for hours does not mean the SQL it is currently executing has been running for more than seconds. If the process includes commits then it may be nothing more than a long series of very short transactions and hence not long operations.
    Also the following two conditions must be true >>
    Set the TIMED_STATISTICS or SQL_TRACE parameter to true
    Gather statistics for your objects with the ANALYZE statement or the DBMS_STATS package << Oracle 9.2 Reference on v$session_longops
    HTH -- Mark D Powell --

  • Based on v$session.state, no  session is "ON CPU" ????

    Hello all,
    v$session.state never equal to "ON CPU", what does it mean ?
    No session is on CPU ???
    v$session.state values possible = WAITED KNOWN TIME or WAITED SHORT TIME or WAITING
    But not "ON CPU", so maybe NEVER any session is on CPU ????
    My aim is to sho the "state" of current "ACTIVE" session ( like "waiting", "working"), and I suffer a little because based on v$session ALL SESSIONS are in WAIT !!!!
    Thanks in advance.

    As Hermant has already pointed out, the "STATE" column in v$session can have 3 values
    (a) waiting
    (b) waited known time
    (c) waited short time
    So if you want to have a more appropriate picture of what you sessions are doing then you can use the following query to get what you want
    select
       decode(state, 'WAITING', event, 'ON CPU')
      ,count(*)
    from v$session
    where status = 'ACTIVE'
    and username is not null
    group by decode(state, 'WAITING', event, 'ON CPU')
    order by count(*) desc;
    SELECT  username
          , schemaname
          , DECODE (state, 'WAITING', event, 'ON CPU')
          , osuser
          , machine
          , program
          , sql_id
          , prev_sql_id
          , module
          , action
          ,client_info
      FROM v$session v
    WHERE status = 'ACTIVE'
    AND username IS NOT NULL;Best regards
    Mohamed Houri
    www.hourim.wordpress.com

  • Htmldb_Get() not updating session state?

    Thankfully, I solved this problem myself before posting this, but I still have questions about why I ran into the problem in the first place.
    Alright, I have a javascript controlled interface on an ApEx page that uses htmldb_Get() for retrieving the current state of a row in the database and for submitting the data back to a page process to update the database row. I've checked my values from the javascript function that saves the data and the strings do contain the updated text from the interface, but when my page process fires off the strings have reverted to what was in the session state from the earlier AJAX request when the interface was loaded.
    * I've checked the session state and the variables in question are reverted, but I noticed that the item statuses are listed as "Updated".
    * I've also tested this process by passing the request string and page items in the URL and the process functions correctly.
    * I've double checked the item definitions to see if the items were being overwritten (they weren't).
    * I've checked the item types to make sure that none were "protected" (they weren't).
    * I haven't found any error messages in logs within ApEx.
    At this point I noticed that the AJAX requests to load the interface were showing up in the "Recent Page Views" report, but the save requests were not. For no particular reason I decided to switch from using the request string in the conditional for the page process and use a page item to control the mode as so...
    WAS:
    var get = new htmldb_Get(null,$x('pFlowId').value,'save_asset_tracking_info',11);
    NOW:
    var get = new htmldb_Get(null,$x('pFlowId').value,'',11);
    get.add('P11_FORM_MODE','save_asset_tracking_info');
    ...and magically the page items in the session state are being updated and all is well. There are few things more frustrating than spending hours debugging a process, then fixing it with an action that you are completely convinced won't change a thing.
    This make no sense to me and I'm hoping someone can explain it or at least point me in the right direction.
    Thanks in advance,
    Jason

    Apologies if I skipped a few details in my first post...
    I haven't included much of my source code because I don't believe it's the key to this issue. If you disagree, I will post the source code for your reference.
    On page 10 of my application, I have a floating div interface that appears in front of the page content. This div is initially empty, but I use JavaScript to make an AJAX call to page 11, strip out a specific region using the get.get() function. On the floating interface, there is a "save" button that fires off another JavaScript function that uses htmldb_Get() and get.add() to post all 21 of the items from the floating interface back to a page process on page 11. The "save" page process is at process point "on load - before header" and is extremely simple -- "if ID found then update record, else insert record".
    The problem I had was that after the "save" button was pressed, all of the items sent via AJAX to the page process were always identical to the initial values from when page 11 was rendered and the floating div interface was populated. This seemed like some sort of quirk or issue with the session state cache overwriting the values that were being sent via AJAX. As I said before, I checked the values in JavaScript immediately before the AJAX "save" submission and everything was kosher, but the page process never got those updated values.
    I managed to eliminate this "symptom" by simply...
    1. Setting the htmldb_Get() request string to null ("")
    2. Adding one more get.add() call for P11_FORM_MODE
    3. Changing the condition on which the page process was fired from the request string to the page item
    All of the other get.add() calls remained the same as did the PL/SQL in the page process.
    Thanks,
    Jason

  • Session state is not being passed properly to another page

    Hello Gurus,
    I have a multi-page application which authenticates using a simple authentication page 101. Right now I have a generic authentication scheme which always returns true (Session Verify Function= return true; I will integrate LDAP later.) It works fine. The app remembers the username from one page to the next (popup pages mainly).
    My issue is that, after exporting the application and re-importing into a new workspace, the user/session state is no longer being preserved from page to page. It prompts for a login every new page that is opened (the popups). This ruins the flow and functionality of the app.
    I've checked every setting (I think) and cannot find any differences between the two workspaces or apps. Any ideas why this would work in one workspace and not the other?
    TIA!
    Jonathan
    I should also indicate that the issue seems to be specifically in calling "callmypopup" function. For some reason it isn't passing the session id properly to the popup page, where it did fine in the other workspace. function text:
    function callMyPopup (sourceItem, popuppagenum, targetItem, appid, appsession) {
    //opens popup pg and passes value in sourceItem to targetItem
    //sourceitem=calling text box, targetItem=text box in popup page
    var minlength = 3;
    if (CheckLength(sourceItem, minlength))
    var formVal1 = document.getElementById(sourceItem).value.toUpperCase();
    var url;
    url = 'f?p=' + appid + ':' + popuppagenum + ':' + appsession + '::::' + targetItem + ':' + formVal1;
    w = open(url,"winLov","Scrollbars=1,resizable=1,width=800,height=600");
    if (w.opener == null)
    w.opener = self;
    w.focus();
    else {alert('Please enter at least ' + minlength + ' characters in your search.');}
    Edited by: austindurant on Sep 5, 2008 7:02 AM
    Edited by: austindurant on Sep 5, 2008 7:46 AM

    It looks like your session id is not correctly passed to your popup page. Try using:
    javascript:popUp2('f?p=&amp;APP_ID.:1:&amp;SESSION.:::::', 600, 700);
    instead, which does the same thing. Put your parameters for the page items there if required.
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.opal-consulting.de/training
    http://apex.oracle.com/pls/otn/f?p=31517:1
    -------------------------------------------------------------------

  • Problem with application item and session state

    Okay, let's see if I can explain this problem coherently.
    I have a small app (one page), with an application item, F_WHERE_CLAUSE.
    This page has three regions in which there are items that the users can populate for search conditions. A couple of these items are "select list with submit" (I still need to upgrade to the AJAX method, I know). There is another region which has one hidden field, called P1_WHERE_CLAUSE. This field is defined to "Always, replacing any value in session state..." with source type of "Item (application or page.....", and a source value of F_WHERE_CLAUSE with no default value.
    I have a button called "Search" which submits the page and fires a PL/SQL process which builds a where condition based upon the other page items and stores the value to the application item F_WHERE_CLAUSE (correctly).
    For testing, I've made the P1_WHERE_CLAUSE field visible so that I can see what's going on. I've also clicked the debug and session buttons to help trace this. After I click the "Search" button and the page submits, debug shows:
    0.02: ...Session State: Save "P1_WHERE_CLAUSE" - saving same value: "1=1"
    followed later by:
    0.05: ...Session State: Saved Item "F_WHERE_CLAUSE" New Value="lower(primary_class) = 'rock' and country = 'Spain'"
    The field P1_WHERE_CLAUSE displays with the correct search criteria as signified by F_WHERE_CLAUSE above. However, If I click the "session" button to view the session state values, P1_WHERE_CLAUSE shows up as:
    P1_WHERE_CLAUSE Textarea    1=1    U while F_WHERE_CLAUSE displays the correct value still.
    The reason this "problem" came up, is that this page also has three SQL report regions which use &P1_WHERE_CLAUSE. for the where condition. While they display the correct results on-screen, each report region also has the "Export to csv" enabled, and the export seems to be using the "1=1" condition (from the "session" window) instead of the search criteria that the on-screen region is using (F_WHERE_CLAUSE and the displayed P1_WHERE_CLAUSE), resulting in a retreival of all records.
    Anybody have any idea what's going on and why, and how to get the csv export to use the correct value for the where condition?
    Thanks,
    Bill Ferguson

    It appears the "Export to CSV" functionality requires the item value to be set in session state. The P1_WHERE_CLAUSE item value never gets saved to session state. The page is rendered and the value is put in the item on the page but until you submit the page session state doesn't know what P1_WHERE_CLAUSE is.
    Create a before header computation or process to set the value of P1_WHERE_CLAUSE (which will save it to session state). It is interesting that the report regions didn't need to look at the value in session state but the "export to csv" does.
    --Jeff                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Interactive Report Download and Session State Protection

    I have created an Interactive Report in an APEX application that I have enabled
    session state protection for. The issue I am having is with the "Download"
    functionality of the interactive report to a .csv file.
    The URL created by selecting Download from the drop down (javascript:gReport.controls.download();)
    is built or constructed without a checksum thus causing the error below.
    Error
    No checksum was provided to show processing for a page that
    requires a checksum when one or more request, clear cache, or argument
    values are passed as parameters.
    The anchor tag containing the URL (/f?p=app_id:page:session_id:CSV:) is contained within
    &lt;div id="apexir_CONTROL_PANEL_DROP" class="drop_panel
    clearfix" style=""&gt;
    Running the following: Application Express 3.1.0.00.32 on Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
    Is there a way to add a checksum to this? OR does anyone have any ideas on how to work around this?
    Edited by: Bryce Tuohy on Feb 26, 2009 10:08 AM

    WORKAROUND:
    1.) Create hidden ITEM on page (I named it P23_PREPARED_CSV_DOWNLOAD_URL).
    Enter the following for the ITEM
    as the SOURCE_TYPE : PL/SQL Function Body
    as the SOURCE: return apex_util.prepare_url('f?p=&APP_ID.:&APP_PAGE_ID.:&APP_SESSION.:CSV:')
    2.) Create BUTTON that executes javascript to open POPUP window with this url.
    a.) Create Button and enter
    &lt;a href="javascript:popupURL('&P23_PREPARED_CSV_DOWNLOAD_URL.')"&gt;Download and Save to CSV file&lt;/a&gt;as the "Text Label/Alt"
    Originally had custom code for javascript POPUP and this is not needed .... just use the APEX javascript function.
    Edited by: Bryce Tuohy on Mar 5, 2009 10:47 AM

  • How to update session state from form field values without submitting page?

    Hi,
    I am new to Oracle APEX. I am using Oracle Apex 4.2 on Oracle 11g release 2. The problem is that when I am entering data on a form, when I enter a value in one field and move to the next field, how can I use the value of first field in the validation procedure of next field? I know that when we enter data in fields, the session state is not updated with these values until we submit the page... right... but I have seen that if there is a control of List box type, then Apex gives an option "Action When List changes" where we can choose option to update corresponding session state field with the value of list box item, without submitting the page.
    Now my questions is why this option is only available for List box items? why not for other item types like Text box, Check box,... ? can someone please help me with this?
    (the issue with update of session state depending on page submitting, is that we need a complete network round trip from client to server in order for it. However if we can update session state variables without submitting page, then we can avoid this network traffic).
    Any help will be greatly appreciated. Thanks in advance.

    Create a dynamic action on change and run a PL/SQL process there with the following code:
    BEGIN
       NULL;
    END;Page items to submit > your item.
    This will set the session state without submitting the form.
    Further examples here:
    http://apex.oracle.com/pls/apex/f?p=31517:229
    Denes Kubicek
    http://deneskubicek.blogspot.com/
    http://www.apress.com/9781430235125
    http://apex.oracle.com/pls/apex/f?p=31517:1
    http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
    -------------------------------------------------------------------

  • Session State in Report Queries

    Hi all,
    I've got a report query with XML Structure set to advanced. I added two items to session state - a "department name", and a "current date" - these are application items that I want to put in the page header of my report template.
    After I load the XML data and go to insert a field, I see some session info available for inserting (appl id, user, report title, etc.) along with my report fields, but I don't see the two session items I added. I took a look at the XML data and they're not there.
    How do I get the session items to be included with the XML?
    Thanks!!!

    Sorry, I should have mentioned I am using a BI Publisher RTF Layout for my report layout, therefore I don't believe I can use it on apex.oracle.com. If BI Publisher is in fact installed there, then please correct me.
    I am including session variables with the report, but the session variables between all of the report queries in my application are common between report queries. (Even though I really only want variables specific to each report to be included) When I add or delete a session variable from one report query, it affects all report queries in my application. This could be a feature, but I doubt it since it does not seem intuitive.
    In addition, sometimes a random session variable or set of session variables will disappear from the list. (this is what I meant by drop) I cannot seem to determine when/what triggers this action, but it seems like this may occur when I delete a particular report query.
    I can try to put up an example on apex.oracle.com, but I'm not sure if this is dependent on the presence of BI Publisher.
    Thanks in advance for any help!
    -David

  • Session state and browser cache - Back button problem

    Hi all,
    I have a problem (and unless I'm missing something I think we all do) with session state and use of the browser's Back button. I really hope I'm just being dumb...
    Background scenario:
    Page P has a sidebar list allowing the user to select what content is displayed (e.g. 'stuff relating to X, Y or Z' where X, Y and Z are rows in, say, a table of projects). When a list entry is clicked, we branch to page P with the value of the list item placed in an application-level item (call it G_PROJECT). Reports on page P use G_PROJECT in their WHERE clauses.
    So, click list entry X and G_PROJECT is set to X and page P shows reports for project X.
    Page P also has a set of buttons which branch to various edit pages which allow attributes of page P's current project to be updated. These pages similarly use G_PROJECT in their WHERE clauses.
    Problem scenario:
    1. The user goes to page P and picks project X off the list. Project X's stuff is displayed (G_PROJECT = X).
    2. The user then picks project Y off the list. Project Y's stuff is displayed (G_PROJECT = Y).
    3. The user then clicks the browser's Back button. The page is served from browser cache, so project X's stuff is displayed, but G_PROJECT still = Y.
    4. The user clicks an 'Edit' button; we submit, and branch to an edit page which displays (and will edit) data for project Y because G_PROJECT still = Y.
    This is SERIOUSLY BAD NEWS - apart from being confusing, the user's edit permissions on projects X and Y may differ, and so the user may be able to perform 'illegal' updates.
    I've read what I can on this forum and the rest of the web looking for ways to a) inhibit browsers' 'Back' functions and/or b) prevent pages being cached by the browser, but none of them have worked for me.
    Short of waiting for browser manufacturers to recognise that the web is now full of applications as well as static pages, and enable robust programmatic control of cache behaviour, does anybody know how the problem can be avoided - or at least detected?
    Thanks,
    jd
    Failed attempts to date:
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="cache-control" content="no-store">
    <meta http-equiv="cache-control" content="private">
    <meta http-equiv="cache-control" content="max-age=0, must-revalidate">
    <meta http-equiv="expires" content="Wed, 09 Aug 2000 01:01:01 GMT">
    <meta http-equiv="pragma" content="no-cache">
    Disallowing duplicate submission (page attribute).
    window.history.go(1);

    Thanks Scott,
    I may be being dumb here but I don't see how that would help...
    P250_PROJECT and G_PROJECT are currently kept in sync by app logic. Whichever is used to drive, if the page is rendered from cache then the app logic is not executed, so the rendered page contents are not those keyed by P250_PROJECT, as illustrated in steps 1-4 of the problem above.
    The user sees X, the session items say Y. The engine doesn't know what the user is seeing.
    when page P is POSTed, its hidden item P250_PROJECT should always be used to derive the application item G_PROJECT. Then whether the page was pulled from cache or rendered anew via a click from the sidebar link, the project ID is determined by the contents of that page.
    As I said above I tried this, with the 'Edit' branch set to:
    Set these items: G_PROJECT
    With these values: &P250_PROJECT.
    but it makes no difference. The project ID is not determined by the rendered page contents - the engine gets the value of P250_PROJECT from session state.
    I can code the 'Edit' pages such that they check permissions and if necessary redirect back to p250 (conditional before-header branch), but that's a clunky cure rather than the prevention I was hoping for.
    Please tell me if my understanding is incorrect.
    jd

  • Session state and item values

    Hi,
    Is it any possibility to bring the session state and an item value to a table?
    Thank you

    Hi,
    For session id use APP_SESSION substitution string
    http://download.oracle.com/docs/cd/E23903_01/doc/doc.41/e21674/concept_sub.htm#sthref160
    Regards,
    Jari
    http://dbswh.webhop.net/dbswh/f?p=BLOG:HOME:0

  • Row fetching, session state, multi-page processing of 1 row - problems

    I'm building an application that's updating a couple of tables via an updateable view and an instead-of trigger. That portion of it works OK, EXCEPT for the problems that I'm having with the APEX end.
    I've got 3 pages; the first page reads the row in via the automated row fetch and has, say columns 1-20.
    Page 2 has, say, columns 20-40 and page 3 has the remainder.
    I have the row fetch set up conditionally so that it only executes the first time that page 1 is displayed. All the columns are set as Database Columns.
    It seems that if I fill in fields on page 1, move to page 2, and back to page 1, the contents of the fields on page 1 are destroyed unless I set their 'Source used' to 'Only when the current value in session state is null'.
    Furthermore, upon update (which is on page 3, via an automated row update), the only columns that get updated are those that exist on page 3. The column values from the other pages no longer exist.
    Does navigation to another page not retain the session-state of database-column items?
    Am I better off just writing my own processes to perform the updates?
    Any other suggestions?
    Frank

    Hello Frank,
    >>I have the row fetch set up conditionally so
    that it only executes the first time that page 1 is
    displayed …
    It seems that if I fill in fields on page 1, moveto page 2, and back to page 1, the contents of the
    fields on page 1 are destroyed unless I set their
    'Source used' to 'Only when the current value in
    session state is null'.
    It seems that the first sentence is not consistent
    with the second one. The only reason the values are
    destroyed, as you call it, is that the ARF is running
    again. What condition are you using on your ARF?
    In any case, the right way to deal with it is to
    change the source used to "Only …", as I understand
    you already did.
    Hi Arie,
    I set an item after the first ARF. I then have the ARF set to execute conditionally based on the presence of that item. (I also display a success message on the ARF, so I know that the ARF is only occurring once). I move to subsequent pages by submitting the current pages.
    >>Does navigation to another page not retain the
    session-state of database-column items?
    Navigating to another page does retain the session state values.
    It's depends on what you mean by navigating.
    Submitting the page set/update session state.
    Redirect without submitting the page will not
    set/update the session state.
    >>Furthermore, upon update (which is on page 3,
    via an automated row update), the only columns that
    get updated are those that exist on page 3. The
    column values from the other pages no longer
    exist.
    Automatic DML is working only with the current page
    items. You can't use it to insert/update other page
    items, even if they are in session state. However, in
    your case, it's not the Automatic DML performing the
    actual updates, but your triggers. Are your triggers
    relying on session state values?
    I think this statement 'Automatic DML is working only with the current page
    items.' answers my question. My trigger is working on session state values. It's an 'instead-of' trigger, so I was letting the automatic DML perform the 'update' on the view, while allowing the trigger to do the actual update of several tables that the view joins by referring to their :NEW. values in the trigger. Since the DML occurs on my last page, those were the only session state values that my trigger ultimately saw.
    >>Am I better off just writing my own processes to
    perform the updates?
    I believe the correct way is to submit the page and
    then branch to the next one. Submitting the page will
    save all your items in session state, and allow these
    items to be available for page 3 DML.
    Regards,
    Arie.I'm doing that already - all the values do appear to be in session sate, except only the items that are on the last page actually make it to the automatic DML update, which seems to agree with your previous statement.
    I suppose I could write my own process to perform the update, as the values are available in session state.
    Thanks,
    Frank

Maybe you are looking for

  • Outlook Integration Documentation Needed

    Hello, We have outlook integration installed, but it does not work, nor do we know what it's supposed to do.  We would be grateful for any documentation of any kind concerning outlook integration(configuration, capabilities, etc.).  How/where can we

  • EM is not working..........

    Hi. Please solve my problem database-10.2.0.1 Operating system-windows 7 when i login to my database through enterprise manager as sys user.I m getting error "java.lang.Exception: Exception in sending Request :: null" when i check log file following

  • Attaching HTTP Links for User Decisions?

    hi all, how can we attach HTTP Links along with User Decisions. i have previously attached Business Objects as links along with approve/reject button but this time I need to attach a HTTP link. Points will be awarded.

  • Need Help with 266 (tray type) Memory upgrade

    Greetings All: I have obtained my first Mac: an iMac 266 (the CD tray load type). I have replaced the hard drive and am now working on the RAM memory. I see the the "upper" slot. I'm guessing the "lower" slot is under the circuit board that fills the

  • Converting from standard to advanced

    Simple question (or so I thought it would have been a simple question before I decided to mess with Leopard Server). If I convert a working standard configuration server to advanced to enable some additional features which can't be done in standard,