How to handle the quotes('') in the procedure?

Hi all,
I have been struggling with an issue in the procedure. Let us go to the functionality of the preocedure.
I am passing a parameter that has text like
' INDIA,BANGALORE,"INOX,BLR","THILAK NAGAR,JAYA NAGAR "4TH 'T' BLOCK,BANGALORE",560030'
Here, INDIA = country field
BANGALORE = city field
INOX,BLR = Theatre field
THILAK NAGAR,JAYA NAGAR "4TH 'T' BLOCK,BANGALORE = address field
560030 = pin field
I want to load these fields into the table thru procedure. Here the issue is if any field value come with quotes(") inside the quotes like above address field. Since , please guide me how to handle that quotes while identifying the field value for either or address field or some other one.
Table structure:
country varchar2(100 char)
city varchar2(100 char)
theatre varchar2(100 char)
address varchar2(2000 char)
pin NUMBER
Procedure Code:
create or replace
PROCEDURE prc_rollout_upload( p_text VARCHAR2 )
AS
v_quote_ind NUMBER := 0;
v_first_pos NUMBER := 0;
v_end_pos NUMBER := 0;
v_text_data varchar2(32767 CHAR) := p_text;
v_text_data1 varchar2(32767 CHAR);
v_text_arr_ind NUMBER := 0;
v_quote_pos NUMBER := 0;
v_comma_pos NUMBER := 0;
type text_rec IS RECORD(country VARCHAR2(20 CHAR),
CITY VARCHAR2(1000 CHAR),
exhibitor VARCHAR2(1000 CHAR),
address VARCHAR2(10000 CHAR),
PIN varchar2(6)
type v_text_tab is table of text_rec;
v_text_array v_text_tab := v_text_tab();
BEGIN
-- Fetch the values from the string to a PL/SQL table
v_text_data1 := v_text_data;
v_text_arr_ind := v_text_arr_ind + 1;
v_text_array.extend(v_text_arr_ind);
-- Country
IF (INSTR(v_text_data1, CHR(34)) > 0 )
THEN
v_quote_ind := INSTR(v_text_data1, CHR(34));
v_first_pos := INSTR(v_text_data1, CHR(34));
v_end_pos := INSTR(v_text_data1, CHR(34),1,2);
v_text_array(v_text_arr_ind).country := SUBSTR(v_text_data1,v_first_pos+1,v_end_pos-2);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).country);
v_text_data1 := SUBSTR(v_text_data1,v_end_pos+2);
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
END IF;
IF ( v_quote_ind = 0 ) THEN
v_text_array(v_text_arr_ind).country := SUBSTR(v_text_data1,1,INSTR(v_text_data1,CHR(44))-1);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).country);
v_text_data1 := SUBSTR(v_text_data1,INSTR(v_text_data1,CHR(44))+1);
-- DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_first_pos := 0;
v_end_pos := 0;
v_quote_ind := 0;
END IF;
-- City
v_quote_pos := INSTR(v_text_data1,CHR(34));
v_comma_pos := INSTR(v_text_data1,CHR(44));
IF ( v_quote_pos < v_comma_pos )
THEN
v_quote_ind := INSTR(v_text_data1, CHR(34));
v_first_pos := INSTR(v_text_data1, CHR(34));
v_end_pos := INSTR(v_text_data1, CHR(34),1,2);
v_text_array(v_text_arr_ind).city := SUBSTR(v_text_data1,v_first_pos+1,v_end_pos-2);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).city);
v_text_data1 := SUBSTR(v_text_data1,v_end_pos+2);
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
IF ( v_quote_pos > v_comma_pos ) THEN
v_text_array(v_text_arr_ind).city := SUBSTR(v_text_data1,1,INSTR(v_text_data1,CHR(44))-1);
-- DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).city);
v_text_data1 := SUBSTR(v_text_data1,INSTR(v_text_data1,CHR(44))+1);
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_first_pos := 0;
v_end_pos := 0;
v_quote_ind := 0;
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
-- Exhibitor
v_quote_pos := INSTR(v_text_data1,CHR(34));
v_comma_pos := INSTR(v_text_data1,CHR(44));
IF ( v_quote_pos < v_comma_pos )
THEN
v_first_pos := INSTR(v_text_data1, CHR(34));
v_end_pos := INSTR(v_text_data1, CHR(34),1,2);
v_text_array(v_text_arr_ind).exhibitor := SUBSTR(v_text_data1,v_first_pos+1,v_end_pos-2);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).exhibitor);
v_text_data1 := SUBSTR(v_text_data1,v_end_pos+2);
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
IF ( v_quote_pos > v_comma_pos ) THEN
v_text_array(v_text_arr_ind).exhibitor := SUBSTR(v_text_data1,1,INSTR(v_text_data1,CHR(44))-1);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).exhibitor);
v_text_data1 := SUBSTR(v_text_data1,INSTR(v_text_data1,CHR(44))+1);
-- DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_first_pos := 0;
v_end_pos := 0;
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
--Address
v_quote_pos := INSTR(v_text_data1,CHR(34));
v_comma_pos := INSTR(v_text_data1,CHR(44));
IF ( v_quote_pos < v_comma_pos )
THEN
v_first_pos := INSTR(v_text_data1, CHR(34));
v_end_pos := INSTR(v_text_data1, CHR(34),1,2);
v_text_array(v_text_arr_ind).address := SUBSTR(v_text_data1,v_first_pos+1,v_end_pos-2);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).address);
v_text_data1 := SUBSTR(v_text_data1,v_end_pos+2);
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
IF ( v_quote_pos > v_comma_pos ) THEN
v_text_array(v_text_arr_ind).address := SUBSTR(v_text_data1,1,INSTR(v_text_data1,CHR(44))-1);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).address);
v_text_data1 := SUBSTR(v_text_data1,INSTR(v_text_data1,CHR(44))+1);
-- DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_first_pos :=0;
v_end_pos := 0;
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
--PIN
v_quote_pos := INSTR(v_text_data1,CHR(34));
v_comma_pos := INSTR(v_text_data1,CHR(44));
IF ( v_quote_pos < v_comma_pos )
THEN
v_first_pos := INSTR(v_text_data1, CHR(34));
v_end_pos := INSTR(v_text_data1, CHR(34),1,2);
v_text_array(v_text_arr_ind).pin := SUBSTR(v_text_data1,v_first_pos+1,v_end_pos-2);
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).pin);
v_text_data1 := 0;
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
IF ( v_comma_pos IS NULL OR v_quote_pos > v_comma_pos ) THEN
v_text_array(v_text_arr_ind).pin := v_text_data1;
--DBMS_OUTPUT.PUT_LiNE(v_text_array(v_text_arr_ind).pin);
v_text_data1 := 0;
--DBMS_OUTPUT.PUT_LiNE(v_text_data1);
v_first_pos := 0;
v_end_pos := 0;
v_quote_pos := 0;
v_comma_pos := 0;
END IF;
EXCEPTION
WHEN others then
DBMS_OUTPUT.PUT_LiNE(SUBSTR(SQLERRM,1,200));
END prc_rollout_upload;
Oracle version :
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
Your help would be highly appreciated !!!
Regards,
Vissu.....

To start with Try this:
SQL> ed
Wrote file afiedt.buf
  1    declare
  2   v_var VARCHAR2(10000) := 'INDIA,BANGALORE,"INOX,BLR","THILAK NAGAR,JAYA NAGAR ';
  3    v_delim VARCHAR2(1) := ',';
  4    v_enclose VARCHAR2(1) := '"';
  5    v_val VARCHAR2(1000) := NULL;
  6    begin
  7    v_var := v_var||'"4TH T BLOCK,BANGALORE",500365'||',';
  8    FOR I IN 1..5 LOOP
  9    v_val :=  CASE WHEN SUBSTR(v_Var,1,1) <> '"' THEN
10              SUBSTR(v_Var,1,INSTR(v_Var,',',1,1)-1)
11              ELSE
12              SUBSTR(v_Var,2,INSTR(v_Var,'",',1,1) - INSTR(v_Var,'"',1,1) - 1)
13              END;
14    v_Var :=  CASE WHEN SUBSTR(v_Var,1,1) <> '"' THEN
15              SUBSTR(v_Var,INSTR(v_Var,',',1,1) + 1)
16              ELSE
17              SUBSTR(v_Var,INSTR(v_Var,'",',1,1) + 2)
18              END;
19    dbms_output.put_line(v_Val);
20    END LOOP;
21*  end;
SQL> /
INDIA
BANGALORE
INOX,BLR
THILAK NAGAR,JAYA NAGAR "4TH T BLOCK,BANGALORE
500365
PL/SQL procedure successfully completed.
SQL>

Similar Messages

  • How to handle multiple selection in the Spark List control with checkbox as itemrenderer?

    Hi All,
    I am using checkbox as an ItemRenderer in spark list.
    I have a query.
    how to handle multiple selection in the Spark List control with checkbox as itemrenderer?
    how to retrieve the selected item label?
    Thank you in advance.

    Hi there, I'll tweak your code a little bit to something like this:
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                    layout="vertical">
        <mx:Script>
            <![CDATA[
                 import mx.events.ListEvent;
                 import mx.controls.CheckBox;
               [Bindable]
               private var mySelectedIndexes:ArrayCollection=new ArrayCollection();
                private function onChange(e:ListEvent):void
                   if(CheckBox(e.itemRenderer).selected){
                             mySelectedIndexes.addItem(e.rowIndex);
                   }else{
                                  mySelectedIndexes.removeItemAt(mySelectedIndexes.getItemIndex(e.rowIndex));     
                   chkList.selectedIndices=mySelectedIndexes.toArray();
            ]]>
        </mx:Script>
    <mx:ArrayCollection id="collection">
            <mx:Object label="Test A"/>
            <mx:Object label="Test B"/>
            <mx:Object label="Test C"/>
            <mx:Object label="Test D"/>
            <mx:Object label="Test E"/>
            <mx:Object label="Test F"/>
            <mx:Object label="Test G"/>
        </mx:ArrayCollection>
    <mx:List id="chkList" dataProvider="{collection}" itemRenderer="mx.controls.CheckBox"  itemClick="onChange(event);" allowMultipleSelection="true"/>
    </mx:Application>

  • How to handle multiple request in the servlet

    how to handle multiple request in the servlet...
    Example:
    java forum...
    i'm login in the java forum at this time 1000 members make login in this....how happended in servlet?
    if we use thread how to implement in servlet ?

    Serlets are already threaded. The application container instantiates the servlet, then uses this instance in a new thread for every use.
    This is the reason that you should use (almost) no instance variables in a Servlet, but rather that (almost) everything should be local to the method.

  • How to handle an update of the same record from two different user  in JSP

    how to handle an update of the same record from two different user
    how do you handle an update of the same record from two different users in JSP... if one person updates the record from one drop downs should be updated as well.. is the possible.

    Usually, if two users try to update the same row at the same time, you want the first to commit to succeed, and when the second commits, they should fail with the error that the row was being concurrently updated. They you may want to show them the new row values and give them the opportunity to merge their values with the new row values...
    How can you achieve this? Google optimistic locking.

  • How to handle transaction control--- in the dbms query or in JDBC? or BOTH?

    Hi all,
    we have a servlet application which do insert, update to a few sybase tables. so far we don't have any transaction management control in either store procedure or in JDBC call. i like to know where should we enforce this control logic? in both place or either one is enough?
    thanks!!

    according to your answer, is it safe to say that we
    should NOT
    handle transaction control in both query and JDBC
    call? i am on the side of JDBC
    program control. However our manager feels that if we
    handle it in two place, we could be more error-proof.
    i don't know how to convince him that only one place
    could make it work. Double your rollbacks double your fun! Odd that a manager is getting involved at this level...
    Providing transaction control at both places, as a rule makes absolutely no sense at all (to me). I actually believe that this would be far more error-prone (not error-proof). It's really a logistics issue. When you are working on the Java code, you won't have the stored procedure(s) code right there. While you may design it masterfully at first, as maintenance occurs, the mastery can easily be lost as assumptions are made on when and where commit or rollback processing is going to take place. The end result would be a system that could easily corrupt the logical integrity of the database.
    If you have to make a decision up front, and you believe performance will ultimately be a concern, then your decision should be to handle transaction management within the stored procedure(s). However, this decision will make the stored procedures far more complex than what the DBA or application staff is familiar with. You would also have to take some care to release resources as appropriate within the Java code.
    If you decide to manage transactions within JDBC, it is possible that you will have to move a portion of transaction managment to one or two of the stored procedures. This would be a 'fix' for a poorly performing functionality, and you would simply take care to limit this as much as possible.
    I wish I could guide you specifically, but I'm working at 20,000 feet related to your specific application needs.

  • How to handle multiple actions in the webservice ?

    Hi Guys,
    I have multiple operations in the webservcie and under soap action in the receiver soap adapter, i dont know how to handle multiple soap operations.
    can anybody guide me, how to acheive this ?
    Thanks,
    srini

    Hi Srini !
    This weblog shows the general design of a scenario with BPM
    /people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm
    This link:
    http://help.sap.com/saphelp_nw04/helpdata/en/de/766840bf0cbf49e10000000a1550b0/content.htm
    show how to insert a predefined BPM pattern. You could use one of the BpmPatternSerialize.... patterns to see how you BPM should look like...
    Basically it should be:
    1) Receive Step (async/sync, as you need) to trigger the BPM
    2) Send step (sync) for first webservice
    3) Send step (sync) for second webservice
    N) Send step (sync) for N webservice
    N+1) if the whole communication is sync, here you need to use a send step to return back the answer to sender.
    Regards,
    Matias.

  • How to handle multiple requests to the same servlet at one time?

    Hi,
    I am new to Servlets. I have doubt regarding ... Handling multiple requests to a servlet at a time.
    If we send a single request to a servlet, as know that group of objects such as servlet, servletContext, servletConfig, request, response and etc are created in the server, And if 1000's of requests are sent to a same servlet at a time, and if server memory capacity is less, then 1000's of objects are created in a server which would be heavy burden to Server. How to handle the application and development in such situation?
    Kind regards,
    veerendra

    Hi veerendra reddy ,
    By default any web server can will have a thread pool to handle client req's.
    In your point also heavy burden to server you are telling that depends on this.
    we can configure this min & max size of this thread pool.
    by default it will be 0-1000 for tomcat server.
    I am not sure in which file this configuration will be.
    But I hope in server.xml or some xml file consists this info.
    If You what you can edit accordingly. to overcome your heavy burden to server.
    Thanks & Regards
    Nagendra

  • How to handle warning message for the fields in tab merging , PERSONAS 2.0

    Hi all,
    Please advice me on the below issue.
    In a transaction VA32 , I have merged the fields from one tab to another tab using tab caching.
    when i try to change the value of  a merged fields , it throws the warnings message. So it is continuously looping from one tab to another tab.
    So i tried to use the additional editor concepts in tab caching as below.
    Looping is stopped and throws warning message in the same tab.
    All the changes are saved successfully only when the enter button is clicked once in the main screen, else the changes are not saved and my previous value remains.
    Anybody have an idea on how we can use Additional actions in Tab caching concepts.
    Thank you,
    Arun

    Hi Kranthi,
    When i try to save the fields which i merged from different tab is not saving.
    Please find the below details.
    Green highlighted fields are custom fields which is merged from different screen like header or item overview screen. This is handled in script button.
    Red highlighted fields are merged from different tab like shipping or sales using tab caching concept.
    While changing the value of the fields which is merged from different tab , and press ENTER then it throws the Warning message if occurs.
    After warning message, if i try to save using the script button for copying all the custom fields which is merged from different screen , pasted it to their respective screens and also saved.
    Its working fine.
    When i try to save it before pressing ENTER button then the respective changes had made in the merged fields from different tab are not reflected.
    How we can handle this issue?
    Thank you,
    Arun

  • How to handle an update of the same record from two different user JSP

    how do you handle an update of the same record from two different users in JSP... if one person updates the record from one drop downs should be updated as well.. is the possible.

    I'm not sure whether I understand your question. If one user changes a record then you would like other users to see those changes. Normally those changes will be visible to other users when they refresh their browser, after the first user has committed changes to the record. I you want to be sure that the same row isn't updated at the same time by to different user, you need to configure some locking (pessimistic locking) - this depends of what technology you use. In EJB3 pessimistic locking is performed by adding a version to every entity object. If you are using ADF, the framework is able to handle either pessimistic or even optimistic locking.
    If you want the changed row to be updated in other users browsers without any user interaction by these users, you should take a look at Reverse Ajax (ex. DWR http://ajaxian.com/archives/reverse-ajax-with-dwr) - or Ajax in general. But you will never get a realtime solution, where changes is visible in other users browsers right after each record update.

  • How to handle "Validation failed for the field - Tax code" issue?

    We had mass uplaod the order that create on Mar with tax code effective date on Apr. Now we would like return on this order  and getting error of "Validation failed for the field - Tax code". How to handle this issue?

    Hi
    You will have to check if the Tax_Code of RMA being received is the same as the one in the related sales order.
    If not you will need to use the same tax_code.
    Refer below document : Doc ID 1584338.1

  • How to handle invalid URLs in the requests

    Currently JSF ignores invalid characters in the request URLs like "|" or "<script>". These characters can be a security issue and can lead to "Cross site scripting" issue.
    I am trying to parse the request URLs and then redirect the user to the error page if the URL contains such invalid characters.
    Is there a better way of handling such characters in the URL?
    One way that i have thought of is to implement the PhaseListener and handle the URLs in the "Restore view" phase but the drawback in this
    implementation is that the controll will come to this listener during all the phases of the JSF life cycle. I just want the request to be handled only once and not during all the phases of JSF.

    Our application has too many customizations around the JSF framework and we have our own limitations extending the base "FacesServlet". It would be better if i can extend the listeners in the JSF framework.

  • How to Include Double Quotes in the Column Name

    Hi,
    I am using Dynamic Sql for creating the columns of a table. I am getting a situation where the user will give the double quotes for some column names. So,Can we add double quote to the column name.
    Thanks in advance.
    Regards,
    Alok Dubey

    http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/sql_elements008.htm
    However, neither quoted nor nonquoted identifiers can contain double quotation marks or the null character

  • How to handle Undelivered messages when the Target Application is down

    Hi
    in our scenario,
    sapEccSystem>OuboundProxy>PI>ReceiverAdapter>ReceiverThirdPartyApplication
    the known issue with the ReceiverThirdPartyApplication is, it gets down in frequent intervals, and automatically gets up and running, but we don't know at what times it will be down and when it will be up again.
    in this asynch scenario, when the scenario gets triggered from source SAP system, and at that time, if the receiverAppl is up, it is working fine.
    but when  the scenario gets triggered from source SAP system and at that time if the receiverAppl is down, the message exchange gets failed
    to address these kinds of issues,
    1. is their any concept of Queuing or anything in PI, that can keep the messages in something like Queues and process them when the receiver application gets up., if yes how can configure them
    Does PI act as Queuing server, so that it delivers the pending messages one ofter another, until they are all finally sent.
    or
    2.is there any retry mechanism, where can specify something like, the undelivered message needs to be resent after waiting for an hour.
    thanks,
    Madhu_1980

    Hi, the number of retries and the retry interval are modifiable java system parameters of the [Service SAP XI Adapter: XI|http://help.sap.com/saphelp_nw04s/helpdata/en/29/22ee41c334c717e10000000a155106/content.htm], check section Properties Related to Outbound Processing. You can change these properties in NWA of PI under Configuration Management -> Infrastructure -> Java System Properties -> Services -> XPI Adapter: XI. The screen in the bottom with the heading Extended Details displays the adapter's service property.
    I found these properties in oss Note 730870 - FAQ XI 3.0/ PI 7.0/ PI 7.1/ PI 7.11/ PI 7.2/ 7.3 RFC Adapter, under Q3, when doing research on another topic.
    Regards, Martin

  • How to handle ' " '(double quotes) in .csv file during migration

    I am facing problem in migrating data from sql server 2000 into oracle via .csv file using sql loader.
    1>How should i migrate the string which contains ' " ' (double quotes) characters,
    as i am enclosing the string in ' " ' in .ctl file (enclosed by ' " ').
    is there any syntax in the control file which can migrate the ' " '(double quotes) as it is as the data in the files is 50000 records .?
    Thank you..

    Yes this is correct.
    but problem will occur when e.g check the foll. string.
    (1001,And I quote "This, will work")
    Here it is a comm(,) in b/w "This and will".
    due to this sqlldr interpret it as end of field. and throws an error.
    I had gone through expert one on one oracle, what it maintioned as,
    put an extra double quotes( " ) like " " to enclosed the double quoted string.
    This works fine. For small data it can be done manually.
    But for large data what condition can be put in the ctl file to achieve this?
    or is there any other way to achieve this?
    Thank you.

  • SMP 3.0: how to handle header values in the SOAP WS using Integration Gateway

    Hi Experts,
    We have a requirement from our current customer where they are providing us a SOAP WS.For one of the method we are passing “username” & “password” as input parameters and getting one security key (some unique number) in the response. We are able to do OData modeling for the same method. So far, it is fine.
    For other method, we have to pass that ”security key” in header along with some other parameters in the body section. While doing the request mapping for this method, we don’t see any option for this key parameter apart from those parameters (in that body section).
    We found one publicly available WSDL to reproduce the same scenario:
    e.g http://api.geosvc.com/services/soap?wsdl . To access its one of the method/operation GetPlace,We have to pass APiKey and Cursor value in the header section.
    <wsdl:message name="GetPlaceRq_Headers">
    <wsdl:part name="ApiKey" element="tns:ApiKey"/>
    <wsdl:part name="Cursor" element="tns:Cursor"/>
    To get APiKey, we have to register first. http://www.geosvc.com/register , once its done, you will get one APiKey as below:
    The same API key has to pass to access “GetPlace” method. So we tried it in SOAP UI to understand how exactly it should work:
    As you can see below, for the method “GetPlace”, we are passing values as in:
    Header Value
    Cursor
    blank
    ApiKey
    df7f8cc90e3345b4980cf6631f33a32d
    Body
    Country
    US
    Place
    HOLLYWOOD,CA
    Also got the response.
    When we do modeling (more precisely request mapping as below) for the same method we don’t see any Header related parameters. We can see only parameters which are available in the BODY section.
    We thought if we can get APIKey parameter in the body sections only, then it would be easy to map with. Right?
    What do you suggest how we should handle this kind of scenarios?
    CC: Mustafa Saglam, Jeff Gebo, Bjoern Woppmann
    Regards,
    JK

    Unfortunately the public example is a slightly different use case.  You have to register to get a static API key that is used in all calls.  That is something you would hard code into the headers.
    I think you are asking about a dynamic key they changes on each login.  It would be great if we had a public one that upon login returned a unique session key to be used in subsequent calls so we could better test and model accordingly.
    If you were using Agentry the answer would be yes you can do this.
    --Bill

Maybe you are looking for