Question about call statement in trigger

I faced a question in written exam.
A CALL statement inside a trigger allow us to call
a)package
b)procedure
c)function
d)another trigger
Can anyone give me answer with reason?
I used CALL statement inside trigger but not allowing to use it. Might be earlier in oracle CALL statement we can use..its only a guess so I am asking in forum..
plz guide me..
rgds,
pc

You can use CALL in a trigger without resorting to EXECUTE IMMEDIATE
SQL> create table t1 (
  2    col1 number
  3  );
Table created.
SQL> create procedure t1_proc
  2  as
  3  begin
  4    dbms_output.put_line( 'In T1_PROC' );
  5  end;
  6  /
Procedure created.
SQL> ed
Wrote file afiedt.buf
  1  create trigger trg_t1
  2    before insert on t1
  3    for each row
  4* call t1_proc
  5  /
Trigger created.
SQL> set serveroutput on;
SQL> insert into t1 values( 1 );
In T1_PROC
1 row created.I can't think of any reason that you'd actually intentionally structure your code this way in this day and age because it would be rather likely to cause confusion for whoever had to support this in the future. But it is valid syntax that probably made sense back in Oracle 5.
Justin

Similar Messages

  • Question about delete statement

    I have question about delete statement...
    i am performing some simple delete statement against one table..but its taking so long..How can we check whether particular delete statements actually deleting records or not..?

    Is the associated select-statement returning rows or not?
    If yes -> delete is deleting
    If no -> delete is just using CPU-cycles
    To tune the delete-statement, you have to tune the corresponding select-statement. To tune the select-statement, you want to read the thread When your query takes too long ...

  • Question about calling batch file by using the System Exec+.vi?

    Hi
    I have a problem about calling batch file. I know that the system exec is equivalent to "run" in Windows. I called the batch file c:\rtxdos\bs\ch0.bat successfully in the "run" but it didn't work in the LabVIEW program. The dos prompt had an error message "Bad command or file name" and it just happen when I call this batch file in LabVIEW. Why?
    Bill.

    Hi,
    Try to set the "working directory" parameter of System exec.vi to the directory where the batch file is located. It may help.
    Good luck.
    Oleg Chutko.

  • Question about 'write' statement

    Hi,
    A question on write statement.
    I have a internal table itab which has field var. I am looping at this itab and writing horizontal heading output like below.
    example on the output heading:
    (3 spaces) itab-var (20 spaces) itab-var (20 spaces) itab-var.
    the coding is:
    loop at itab.
    write: 3 itab-var.
    endloop.
    I want to increase the space by 20 for every loop. How to increase this 3 by 20? Can we accomplish this way?
    Thank you for your time.

    hi krishen,
    just add 20 inside the loop , so that after every loop its value increases by 20
    for example:
    data: v  type i.
    v=3.
    do 3 times.
    write: at v(20).
    v=v+20.
    end do.
    hope it will help you
    regards
    Rahul sharma
    Edited by: RAHUL SHARMA on Sep 4, 2008 7:47 AM

  • A question About SUBMIT statement

    Hi,
    By SUBMIT statement, i can trigger another report. If the called report runs into dump, how can i detech/catch the dump in the calling report? I tested. It seems impossible to catch the dump. The calling report will also dump.
    My question is, if the called report runs into dump, how to detect the dump and avoid dump in calling report?
    Thanks in advance,
    Best Regards, Johnney.

    hi
    you can catch this kind of error or exeption from the respective report
    then pass this error or exeception to the calling report
    go through the  example I  am giving , ti have done it like this only  
    SUBMIT zgurep03 AND RETURN WITH SELECTION-TABLE li_seltab .
    then in the called reprot
    *Check ledger
      SELECT SINGLE * FROM t881 WHERE rldnr = p_rldnr.
      IF sy-subrc NE 0.
        SET CURSOR FIELD 'P_RLDNR'.
         MESSAGE e448 WITH p_rldnr
          MESSAGE e446 INTO lv_text .
          lv_type = 'E'.
    Capturing the error messages.
    EXPORT lv_text TO MEMORY ID 'TX'(004).
    EXPORT lv_type TO MEMORY ID 'TP'(005).
    in calling report
      IMPORT gv_type1 TO gv_type FROM MEMORY  ID 'TP'.
      IMPORT gv_text1 TO gv_text FROM MEMORY ID 'TX'.
    preparing error message in the callge report for the calling report
    PERFORM prepare_message
            USING sy-msgid
                  lv_msgno
                  lv_msgv1
                  lv_msgv2
                  lv_msgv3
                  lv_msgv4
            CHANGING gv_text.
    preparing  error message
    FORM prepare_message  USING    p_sy_msgid
                                   p_sy_msgno
                                   p_sy_msgv1
                                   p_sy_msgv2
                                   p_sy_msgv3
                                   p_sy_msgv4
                          CHANGING p_gv_text.
      CALL FUNCTION 'FORMAT_MESSAGE'
        EXPORTING
          id        = p_sy_msgid
          lang      = 'EN'
          no        = p_sy_msgno
          v1        = p_sy_msgv1
          v2        = p_sy_msgv2
          v3        = p_sy_msgv3
          v4        = p_sy_msgv4
        IMPORTING
          msg       = gv_text
        EXCEPTIONS
          not_found = 1
          OTHERS    = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    I guess this will solve your problem
    Regards
    Prashant

  • Question about conversational state of Stateless bean....

    Hello all,
    I have a simple stateless bean which parses an XML file and stores the xml content as an list of 2-D arrays in member variables. Here is quick look at design...
    import javax.ejb.Stateless;
    // included other libraries
    import java.util.List;
    import java.util.ArrayList;
    @Stateless
    public class XMLParseBean implements XMLParseBeanInterface {
        public List<String> strParameters;
        public List<String> getStrParameters() {
            return strParameters;
        private void setStrParameters(List<String> strParameters) {
            this.strParameters = strParameters;
        public void parseXML(String strFileName) {
               /* Open the XML file and do initializations for xml parsing here
                setStrParameters(visitNode(doc.getDocumentElement()));
        private List<String> visitNode(Element thisNode) {
                /* Parse the XML here */
                return strNodes; // return the node names and their values
    }My question is : if I inject this bean in another bean, call the method for parsing XML and then call the getParameter method to access the value of member variable, will it work.
    I mean since I am using stateless bean, does the conversation state end when the parseXML method ends?

    sir_edward wrote:
    Hi vikram8jp,
    The session of an stateless bean ends after a method call. If you call a method of your bean, the bean will forget all attributes when the method ends. If you want to save attributes, you have to use a stateful bean.
    Regards
    Sir EdwardHello Sir Edward,
    That answers my query.

  • Beginner question about prepared statements...PLEASE help! :-)

    First let me say thanks for the assistance. This is probably really easy to do, but I'm new to JSP and can't seem to figure it out.
    I want to dynamically populate a table that shows whether a particular person has an appointment at a given date and time with a user. To do this, I want to query the MySQL database for the lastname of the person with the appointment that occurs with the user at the year, month, date, and time, in question.
    THE CODE BELOW DOESN'T WORK (obviously) BUT SOMEWHAT ILLUSTRATES WHAT I'M TRYING TO ACCOMPLISH:
    <%
    Driver DriverTestRecordSet = (Driver)Class.forName(MM_website_DRIVER).newInstance();
    Connection ConnTestRecordSet = DriverManager.getConnection(MM_website_STRING,MM_website_USERNAME,MM_website_PASSWORD);
    PreparedStatement StatementTestRecordSet = ConnTestRecordSet.prepareStatement("SELECT lastname FROM appts_pid1 WHERE user_id='<%=(((Recordset1_data = Recordset1.getObject(user_id))==null || Recordset1.wasNull())?"":Recordset1_data)%>' AND year='<%= yy %>' AND month='<%= months[mm] %>' AND date='<%= dates[dd] %>' AND appttime='16:15:00'");
    ResultSet TestRecordSet = StatementTestRecordSet.executeQuery();
    boolean TestRecordSet_isEmpty = !TestRecordSet.next();
    boolean TestRecordSet_hasData = !TestRecordSet_isEmpty;
    Object TestRecordSet_data;
    int TestRecordSet_numRows = 0;
    %>
    The real problem comes in the prepared statement portion. If I build the prepared statement with static values like below, EVERYTHING WORKS GREAT:
    PreparedStatement StatementTestRecordSet = ConnTestRecordSet.prepareStatement("SELECT lastname FROM appts_pid1 WHERE user_id='1' AND year='2002' AND month='October' AND date='31' AND appttime='16:15:00'");
    But when I try to use dynamic values, everything falls apart. It's not that the values aren't defined, I use the user_id, year <%= yy %>, month <%= months[mm] %>, etc. elsewhere on the page with no problems. It's just that I can't figure out how to use these dynamic values within the prepared statement.
    Thanks for reading this far and thanks in advance for the help!!!!

    Hi PhineasGage
    You are little bit wrong in your
    your preparedStatement.
    Expression tag within scriptlet tag is invalid.
    Whenever you are appending the statement with
    expression tag, append it with "+" and remove
    expression tag.
    Hopefully it will work
    ThanksThanks for the response!
    I know that the expression tag within scriptlet tag is invalid. I just need a workaround for what I want to do.
    I'm unclear what you mean by "Whenever you are appending the statement with expression tag, append it with a "+" and remove expression tag".
    Could you give an example?
    In the meantime, I've been trying to digest the docs on prepared statements and have changed the code to look like:
    PreparedStatement StatementTestRecordSet = ConnTestRecordSet.prepareStatement("SELECT lastname FROM appts_pid1 WHERE user_id= ? AND year= ? AND month= ? AND date= ? AND appttime='13:15:00'");
    StatementTestRecordSet.setInt(1,1);
    StatementTestRecordSet.setInt(2,2002);
    StatementTestRecordSet.setString(3,"October");
    StatementTestRecordSet.setInt(4,31);
    Again, WITH THE STATIC VALUES, THIS WORKS FINE...but when I try to use expressions or variables like below, things don't work:
    StatementTestRecordSet.setInt(2,<%= yy %>);
    Obviously, I'm doing something wrong, but there has to be a way to use variables within the prepared statement.
    ALSO, the values are being passed to this page via URL in the form:
    samplepage?user_id=1&year=2002&month=October&date=31
    Based upon this information, is there another way (outside of stored procedures in the db) to do what I want to do? I'm open to ideas.

  • A question about calling classes

    Hi,
    I have a question regarding software design so that each class is independent of other.
    public class A
        public void methodA()
                 B m_B=new B();
              String strA=m_B.getBString();
              System.out.println(strA);
    public class B
       public String getBString()
                      return "someString";
    }My question: Is it possible to call the method in class B from class A without creating an instance of class B in method of class A ?
    I am trying to figure out if this can be done using interfaces and abstract classes.
    I am waiting for some suggestions and if you have completely different suggestion then I am open for it too.
    thanks in advance,
    @debug.

    interface I {
        String getString();
    class B implements I {
        public String getString() { return "someString";}
    class A {
        private I foo;
        public void setFoo(I foo) {this.foo = foo;}
        public I getFoo() {return foo;}
        public void methodA() {
          System.out.println(getFoo().getString());
    public class Main {
        public static void main(String[] args) {
            A a = new A();
            a.setFoo(new B());
            a.methodA();
    }There's one problem with decoupling A and B in this case - A's method creates an instance of B. The above is one solution. There are many others.

  • Question about calling a function.

    Im trying to call a function when a button is clicked, im using actionlistner() on the button, which looks as so :-
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
            jButton1ActionPerformed.keyPad();
        }then trying to run this fuction when the button is clicked:-
    private void keyPad(java.awt.event.ActionEvent keyPad){
            String oldNumber;                           //set oldNumber to String
            String newNumber;                           //set newNumber as a String
            jButtonCall.setEnabled(true);
            jLabelInstruction.setText("Press 'Call' When Ready...");
            oldNumber = jTextFieldScreenDisplay.getText();      //get txt, if any, assign to oldNumber
            newNumber = oldNumber + "1";                        //set newNumber as oldNumber adding String to end
            jTextFieldScreenDisplay.setText(newNumber);         //Display newNumber
        }Im new, please go easy, everything is done in the main class, but would like to take this one stage further and create a seperate class outside the main, but i wan to get this working from within the main first.
    Cheers Guy's
    Doo

    So what is your question?
    Besides:
    - the things are called "methods"Hello There!
    Sorry, i'm trying to call a 'method'. I have buttons numbered 0-9 which enter into a text field once clicked using ActionEvent. At the moment each button has its own block of code which is a bad habit as its the same code over with one differance, the number value.
    Am i right in thinking i should create one method? Then calling this method on each button.
    The problem i have is i am unsure of the code to call the method within each buttons ActionEvent ie:-
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
             //call the method keyPad when button is clicked
    private void keyPad(java.awt.event.ActionEvent keyPad){
              //run this
    - if you define a method to accept a parameter, you
    actually have to provide a parameter upon calling
    that method.I don't understand???
    Thanks
    Doo

  • Question about calling a procedure from a URL

    Hi
    In an Apex 3.0 application (which is not public) I use a procedure call in a URL to download the person's photo, if any. The call looks like this:
    {img src=#OWNER#.download_photo?p_id=&P10_ID.}
    This works fine. However, I found out that I can run that procedure just typing that URL in a web browser, without the need to be logged in to any application!
    This seems to me like a flaw in my procedure and I think I am missing something. In a way it makes sense, as there is not any reference in the URL to the application.
    How can I make this procedure to run only if I am logged in the application it is supposed to be run from?
    Thanks
    Luis

    Luis,
    There is a section (Security Issues to Consider) in the file upload/download how-to that describes how to handle this. Also, Anton Nielsen describes a technique linked to from Re: About file .
    Scott

  • Some very basic questions about calling a DLL in C[VI] code.

    Hello everyone!
    I'm sorry if this a really simple concept. I've come from a background of embedded systems, so DLLs are something I haven't really played around with much. Regardless. I'm developing an application in CVI for a project, and I generated a DLL that I want to use in Visual Studio 2013. I was able to compile it and it output the expected *.dll file. My question however is how do I properly import that *.dll into the CVI IDE? I did google and search the forums and I didn't find what I needed exactly.... I did find however this link: <http://www.ni.com/white-paper/8503/en/>. I did read through it all, and I think I'm going to try and use Implicit Linking. In the link it does detail 3 steps: 
    Include the import library (.lib) in your LabWindows/CVI project
    Include the header file that contains the function prototype in your code using #include
    Call the function in your code like any other function
    I was able to easily complete step 1.. Now I'm on step 2. The headerfile that contains the function prototype of my code...I was looking at examples, do I just call the dll file as a .h file now? It seemed that way from what I saw. Do I need to output a header file for the DLL some how? Does the CVI compiler automatically reference that .h file with the lib that was imported? 
    Then in step 3...do I call the functions like they're in another file in the project? Just call the function as usual with the type and then feed the variables into the function and so on?
    Sorry if this is a really rudimentary question.
    Thanks in advance!
    ~Andrew

    The header file definitely isn't the .dll renamed! While creating the .dll, your development environment (don't know which one you've used) should create both a .lib file and a .h file that you must use in your project if you want to go the static linking way. I see you've found the .lib file: the .h file should be available as well, possibly in the same path. The include file lists all the definitions for variables and functions exposed by the dll.
    As per step #3 the answer is yes: you simply call .DLL functions like any other function in your program. At the bottom of the tutorial you've linked there is a link to a Developer Zone Example that is a complete CVI project that uses a .DLL: you may take this as a sample framework to study.
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Question about sql statement

    Hi expert,
    I have following sql statement, function 'hiroc_get_delta_amount1' and 'hiroc_get_delta_amount2' are separately used in select and where subclause. these two function are exactly same, except that there is a inserting log statement inside. for function 'hiroc_get_delta_amount1' , logs are supposed to write into log table1, whereas for function 'hiroc_get_delta_amount2' , logs are supposed to write into log table2. after running this sql, I got data loaded into log table2, however, there is no data loaded into log table1.
    could you please tell me why there is no data in log table2 for function
    1. sql statement;
    select
    pp.policy_premium_pk,
    pp.policy_fk,
    pp.policy_term_fk,
    pp.risk_fk,
    pp.coverage_fk,
    pp.transaction_log_fk,
    pp.coverage_component_code,
    hiroc_rpt_user.hiroc_get_delta_amount1(pp.policy_fk, pp.policy_term_fk, pp.risk_fk, pp.coverage_fk, pp.transaction_log_fk, pp.coverage_component_code),
    pp.rate_period_from_date
    from PRODBKUPDW_MART.rmv_policy_premium pp
    where pp.rate_period_type_code = 'TERM_COVG'
    and pp.coverage_component_code 'NETPREM'
    and hiroc_rpt_user.hiroc_get_delta_amount2(pp.policy_fk, pp.policy_term_fk, pp.risk_fk, pp.coverage_fk, pp.transaction_log_fk, pp.coverage_component_code) != 0
    group by pp.policy_premium_pk,
    pp.policy_premium_pk,
    pp.policy_fk,
    pp.policy_term_fk,
    pp.risk_fk,
    pp.coverage_fk,
    pp.transaction_log_fk,
    pp.coverage_component_code,
    pp.rate_period_from_date;
    2. log inserting statement used for both functions:
    (1) function 'hiroc_get_delta_amount1'
    insert into HIROC_RPT_USER.LOG_TEST1 values (v_start, sysdate,
    p_policy_fk,p_policy_term_history_fk,p_risk_fk,p_coverage_fk,p_transaction_log_fk,p_comp_code);
    COMMIT;
    (2) function 'HIROC_GET_DELTA_AMOUNT_1'
    insert into HIROC_RPT_USER.LOG_ZB_TEST_1 values (v_start, sysdate,
    p_policy_fk,p_policy_term_history_fk,p_risk_fk,p_coverage_fk,p_transaction_log_fk,p_comp_code);
    COMMIT;

    Are your functions using autonomous transactions?
    We also need more information about the log tables etc. as we cannot tell what the problem would be from just that query, and no data.

  • Question about some statement

    Hello Gurus,
           as for a statement "The MBW job BI_BTCH__FX_PAYMENT_DATA=X10M and itu2019s child job ended with completed Abnormally status.", I have some question as follows:
         (1) where does they check out this job " BI_BTCH__FX_PAYMENT_DATA=X10M " ?  what do that "="  and "X10M" and "BI_BTCH__FX_PAYMENT_DATA"   mean ?
        (2) how does " MBW job BI_BTCH__FX_PAYMENT_DATA=X10M "  match some BW object?
        (3) what is  itu2019s child job ?
    Ma

    Is the associated select-statement returning rows or not?
    If yes -> delete is deleting
    If no -> delete is just using CPU-cycles
    To tune the delete-statement, you have to tune the corresponding select-statement. To tune the select-statement, you want to read the thread When your query takes too long ...

  • Question about Merge Statement

    Is it possible to use a CASE statement inside the update clause of a merge statement? Also what about a function?
    I have a string (In Source) that needs to be split into multiple columns (In Target) depending on values in other columns (In Source).
    I am on 11iR1

    Hi Chris,
    You can take a look at the below examples :
    SQL>create table t_test
    col1,col2,col3
    ) as
    select 1,2,3 from dual union all
    select 2,3,4 from dual union all
    select 3,4,2 from dual union all
    select 9,10,12 from dual union all
    select 11,23,43 from dual
    create table succeeded.
    SQL>select * from t_test;
    COL1                   COL2                   COL3                  
    1                      2                      3                     
    2                      3                      4                     
    3                      4                      2                     
    9                      10                     12                    
    11                     23                     43    
    SQL>merge INTO t_test t_t USING
      SELECT
        1 AS col1
      FROM
        dual
    ) d_d
    ON
    (d_d.col1 = t_t.col1)
    WHEN matched THEN
      UPDATE set
        col2 = (
          CASE
            WHEN d_d.col1 = 1
            THEN 123
            ELSE -1
          END );
    1 rows merged
    SQL>select * from t_test;
    COL1                   COL2                   COL3                  
    1                      123                    3                     
    2                      3                      4                     
    3                      4                      2                     
    9                      10                     12                    
    11                     23                     43                    

  • A question about call manager traces for Sip phones.

    So today I create a sip based ip communicator and pressed the new call button and heard a dial tone.  I started typing my telephone number. Half way through, I heard  another secondary dial tone (which indicates mis-configured route pattern somewhere) . 
    However, When I look at the call manager logs, I do not actually see the digits that I was typing. With SCCP, I can see the keypad button press messages in the traces, but here, I cannot see the pressed buttons in my CUCM traces. Can anyone help with telling me how I can see button presses going to call manager .   All I can see are the logs  below which came up as soon as I got the dial tone and the final sip invite messages. I see nothing in-between. 
    |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.xx.4.xx on port 56714 index 31809 with 973 bytes:
    [6387070,NET]
    NOTIFY sip:[email protected] SIP/2.0
    Via: SIP/2.0/TCP 10.x.x.66:56714;branch=z9hG4bK00005b1e
    To: <sip:[email protected]>
    From: <sip:[email protected]>;tag=00ffb00bc50a00340000499f-00006ab4
    Call-ID: [email protected]
    Date: Sat, 14 Feb 2015 14:17:40 GMT
    CSeq: 19 NOTIFY
    Event: dialog
    Subscription-State: active
    Max-Forwards: 70
    Contact: <sip:[email protected]:56714;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 350
    Content-Type: application/dialog-info+xml
    Content-Disposition: session;handling=required
    <?xml version="1.0" encoding="UTF-8" ?>
    <dialog-info xmlns:call="urn:x-cisco:parmams:xml:ns:dialog-info:dialog:callinfo-dialog" version="18" state="partial" entity="sip:[email protected]">
    <dialog id="12" call-id="[email protected]" local-tag="00ffb00bc50a003300006390-00002d4f"><state>trying</state></dialog>
    </dialog-info>
    SIPStationD(12991) - processCommonDialogNotifyInd:   Did 12 Sending Notified SIPOffHook to new Cdfc

    Here is a more detailed explanation of how SIP calls notify cucm when they go off hook to make a call. The digit dialled here is 4080
    +++++ Analysis of SIP Phone making a call +++++++++
    The user picks up the phone and the IP Phone sends a NOTIFY to CUCM to indicate the start of a new dialog. This dialog begings by an offhook event
    00869539.002 |14:58:13.837 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 976 bytes:
    [46240,NET]
    NOTIFY sip:[email protected] SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK00002531
    To: <sip:[email protected]>
    From: <sip:[email protected]>;tag=544e42f26d0b001e000056e7-0000311c
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:13 GMT
    CSeq: 11 NOTIFY
    Event: dialog
    Subscription-State: active
    Max-Forwards: 70
    Contact: <sip:[email protected]:52910;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 350
    Content-Type: application/dialog-info+xml
    Content-Disposition: session;handling=required
    <?xml version="1.0" encoding="UTF-8" ?>
    <dialog-info xmlns:call="urn:x-cisco:parmams:xml:ns:dialog-info:dialog:callinfo-dialog" version="10" state="partial" entity="sip:[email protected]">
    <dialog id="6" call-id="[email protected]" local-tag="544e42f26d0b001d00007cc9-000044a3"><state>trying</state></dialog>
    </dialog-info>
    ++++ CUCM SIP stack processes the new connection for the phone+++++++
    00869540.001 |14:58:13.837 |AppInfo  |//SIP/Stack/Info/0x0/ccsip_process_sipspi_queue_event: ccsip_spi_get_msg_type returned: 2 (SIP_NETWORK_MSG), for event 1 (SIPSPI_EV_NEW_MESSAGE)
    00869540.002 |14:58:13.837 |AppInfo  |//SIP/Stack/Transport/0x0/sipTransportProcessNWNewConnMsg: context=(nil)
    00869540.003 |14:58:13.837 |AppInfo  |//SIP/Stack/Transport/0x0/sipConnectionManagerProcessNewConnMsg: gConnTab=0xe81c0d70, addr=10.50.16.1, port=52910, connid=2748, transport=TCP
    ++++ Next CUCM allocates a call id for this call +++++
    00869546.002 |14:58:13.838 |AppInfo  |LineControl(66) - Get call instance=1 for CI=24419584
    +++Next CUCM sends a 200 OK to the NOTIFY request for the new dialog ++++
    00869555.007 |14:58:13.839 |AppInfo  |//SIP/Stack/Transport/0x0xe7df4d48/sipTransportPostSendMessage: Posting send for msg=0xefbe9910, addr=10.50.16.1, port=52910, connId=2748 for
    00869555.008 |14:58:13.839 |AppInfo  |//SIP/Stack/Info/0x0/act_dialog_pending_resp_event: Changing from State: SUBSCRIBE_STATE_DIALOG_PENDING to state SUBSCRIBE_STATE_ACTIVE
    00869556.000 |14:58:13.839 |SdlSig   |SIPSPISignal                           |wait                           |SIPTcp(1,100,71,1)               |SIPHandler(1,100,79,1)           |1,100,14,31314.75^10.50.16.1^SEP00909E9D106C |*TraceFlagOverrode
    00869556.001 |14:58:13.839 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46241,NET]
    SIP/2.0 200 OK
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK00002531
    From: <sip:[email protected]>;tag=544e42f26d0b001e000056e7-0000311c
    To: <sip:[email protected]>;tag=1822746380
    Date: Mon, 16 Feb 2015 12:58:13 GMT
    Call-ID: [email protected]
    CSeq: 11 NOTIFY
    Server: Cisco-CUCM10.5
    Content-Length: 0
    ++++ The IP Phone sends its connection ID to CUCM, its ip address and its port number+++++++++
    00869541.001 |14:58:13.838 |AppInfo  |SIPStationInit: connID=2748, SEP00909E9D106C, 10.50.16.1:52910, Routed signal by connection index to (1,100,73,66)
    ++++ Next CUCM informs us that the NOTIFY message is for an offhook event ++++++
    00869542.003 |14:58:13.838 |AppInfo  |SIPStationD(66) - processCommonDialogNotifyInd: Notified Dialogs - Did 6 State trying
    00869542.004 |14:58:13.838 |AppInfo  |SIPStationD(66) - processCommonDialogNotifyInd:   Did 6 Sending Notified SIPOffHook to new Cdfc
    00869542.010 |14:58:13.838 |AppInfo  |SIPStationD(66) - processSIPOffHook Primary Call Not-Found
    00869543.000 |14:58:13.838 |SdlSig   |SIPOffHookInd 
    +++ The next thing is the USER dials a digit on the phone ++++++
    This is where it gets a little complicated. So lets examine this. The first digit that is dialled generates an INVITE to CUCM like this:
    In this example the user dialled "4" first so we see an "INVITE sip:4@host-IP"
    00869559.002 |14:58:14.064 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 1445 bytes:
    [46242,NET]
    INVITE sip:[email protected];user=phone SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK000015ec
    From: "Emre ESEN" <sip:[email protected]>;tag=544e42f26d0b001d00007cc9-000044a3
    To: <sip:[email protected];user=phone>
    Call-ID: [email protected]
    Max-Forwards: 70
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 101 INVITE
    User-Agent: Cisco-SIPIPCommunicator/9.1.1
    Contact: <sip:[email protected]:52910;transport=tcp>
    Expires: 180
    Accept: application/sdp
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE,INFO
    Remote-Party-ID: "Emre ESEN" <sip:[email protected]>;party=calling;id-type=subscriber;privacy=off;screen=yes
    Supported: replaces,join,sdp-anat,norefersub,extended-refer,X-cisco-callinfo,X-cisco-serviceuri,X-cisco-escapecodes,X-cisco-service-control,X-cisco-srtp-fallback,X-cisco-monrec,X-cisco-config,X-cisco-sis-5.1.0,X-cisco-xsi-8.5.1
    Allow-Events: kpml,dialog
    Content-Length: 373
    Content-Type: application/sdp
    Content-Disposition: session;handling=optional
    v=0
    o=Cisco-SIPUA 21020 0 IN IP4 10.50.16.1
    s=SIP Call
    t=0 0
    m=audio 20250 RTP/AVP 0 8 18 9 116 124 101
    c=IN IP4 10.50.16.1
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:18 G729/8000
    a=fmtp:18 annexb=no
    a=rtpmap:9 G722/8000
    a=rtpmap:116 iLBC/8000
    a=fmtp:116 mode=20
    a=rtpmap:124 ISAC/16000
    a=rtpmap:101 telephone-event/8000
    a=fmtp:101 0-15
    a=sendrecv
    +++++ NEXT CUCM sends a trying for the INVITE it received +++++++++++
    00869562.001 |14:58:14.065 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46243,NET]
    SIP/2.0 100 Trying
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK000015ec
    From: "Emre ESEN" <sip:[email protected]>;tag=544e42f26d0b001d00007cc9-000044a3
    To: <sip:[email protected];user=phone>
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    Call-ID: [email protected]
    CSeq: 101 INVITE
    Allow-Events: presence
    Content-Length: 0
    ++++NOW CUCM evaluates the DTMF supported by the phone to determine how to inform the phones to send the remaining dtmf digits++++
    From the INVITE cucm concludes that KPML and rtp-nte is supported
    00869566.009 |14:58:14.066 |AppInfo  |setEndpointsDtmfCaps: KPML Supported.
    00869566.010 |14:58:14.066 |AppInfo  |setEndpointsDtmfCaps: Detected inband DTMF support
    Next CUCM generates kpml event pkg which is going to be used to receive the remaining digits from the phone
    00869590.001 |14:58:14.067 |AppInfo  |SIPEventPkg::SIPEventPkg 0xe4a1d1e0 scbId[16725], event name[kpml; [email protected]; from-tag=544e42f26d0b001d00007cc9-000044a3], id[]
    +++ Next CUCM sends a SUBSCRIBE to the IP phone for kpml event +++++
    00869594.001 |14:58:14.068 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46244,NET]
    SUBSCRIBE sip:[email protected]:52910 SIP/2.0
    Via: SIP/2.0/TCP 10.28.132.111:5060;branch=z9hG4bKce719b37856
    From: <sip:[email protected]>;tag=480227084
    To: <sip:[email protected]>
    Call-ID: [email protected]
    CSeq: 101 SUBSCRIBE
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    User-Agent: Cisco-CUCM10.5
    Event: kpml; [email protected]; from-tag=544e42f26d0b001d00007cc9-000044a3
    Expires: 7200
    Contact: <sip:[email protected]:5060;transport=tcp>
    Accept: application/kpml-response+xml
    Max-Forwards: 70
    Content-Type: application/kpml-request+xml
    Content-Length: 424
    <?xml version="1.0" encoding="UTF-8" ?>
    <kpml-request xmlns="urn:ietf:params:xml:ns:kpml-request" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:kpml-request kpml-request.xsd" version="1.0">
      <pattern criticaldigittimer="1000" extradigittimer="500" interdigittimer="15000" persist="persist">
        <regex tag="Backspace OK">[x#*+]|bs</regex>
      </pattern>
      </kpml-request>
     +++ Next we get a 200 OK to the SUBSCRIBE from the ip phone ++++
     00869595.002 |14:58:14.118 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 459 bytes:
    [46245,NET]
    SIP/2.0 200 OK
    Via: SIP/2.0/TCP 10.28.132.111:5060;branch=z9hG4bKce719b37856
    From: <sip:[email protected]>;tag=480227084
    To: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 101 SUBSCRIBE
    Server: Cisco-SIPIPCommunicator/9.1.1
    Contact: <sip:[email protected]:52910;transport=TCP>
    Expires: 7200
    Content-Length: 0
    +++ NEXT the IP phones sends the remaining digit dialled on the phone to CUCM +++
    00869603.002 |14:58:14.183 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 573 bytes:
    [46247,NET]
    NOTIFY sip:[email protected]:5060 SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK000045c8
    To: <sip:[email protected]>;tag=480227084
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 1000 NOTIFY
    Event: kpml
    Subscription-State: active; expires=7200
    Max-Forwards: 70
    Contact: <sip:[email protected]:52910;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 0
    00869608.001 |14:58:14.183 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46248,NET]
    SIP/2.0 200 OK
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK000045c8
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    To: <sip:[email protected]>;tag=480227084
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    Call-ID: [email protected]
    CSeq: 1000 NOTIFY
    Server: Cisco-CUCM10.5
    Content-Length: 0
    +++Next the IP phone sends the next digit. Here its important to note that the NOTIFY doesnt contain the next digit,
    the NOTIFY is still the same as the first digit but the next digit is carried in the xml document attached to the NOTIFY.
    At this point I will insert a paragraph from the RFC 4730 for SIP KPML
    +++++++++++++
    The event package uses SUBSCRIBE
       messages and allows for XML documents that define and describe filter
       specifications for capturing key presses (DTMF Tones) entered at a
       presentation-free User Interface SIP User Agent (UA).  The event
       package uses NOTIFY messages and allows for XML documents to report
       the captured key presses (DTMF tones), consistent with the filter
       specifications, to an Application Server +++++++++++++++++++++++++++
    00869609.002 |14:58:14.209 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 877 bytes:
    [46249,NET]
    NOTIFY sip:[email protected]:5060 SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK00003c9d
    To: <sip:[email protected]>;tag=480227084
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 1001 NOTIFY
    Event: kpml
    Subscription-State: active; expires=7200
    Max-Forwards: 70
    Contact: <sip:[email protected]:52910;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 209
    Content-Type: application/kpml-response+xml
    Content-Disposition: session;handling=required
    <?xml version="1.0" encoding="UTF-8"?>
    <kpml-response xmlns="urn:ietf:params:xml:ns:kpml-response" version="1.0" code="200" text="OK" suppressed="false" forced_flush="false" digits="0" tag="Backspace OK"/>
    00869622.001 |14:58:14.210 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46250,NET]
    SIP/2.0 200 OK
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK00003c9d
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    To: <sip:[email protected]>;tag=480227084
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    Call-ID: [email protected]
    CSeq: 1001 NOTIFY
    Server: Cisco-CUCM10.5
    Content-Length: 0
    +++ Again we get the next digit ++++
    00869624.002 |14:58:14.262 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 877 bytes:
    [46251,NET]
    NOTIFY sip:[email protected]:5060 SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK0000310f
    To: <sip:[email protected]>;tag=480227084
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 1002 NOTIFY
    Event: kpml
    Subscription-State: active; expires=7200
    Max-Forwards: 70
    Contact: <sip:[email protected]:52910;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 209
    Content-Type: application/kpml-response+xml
    Content-Disposition: session;handling=required
    <?xml version="1.0" encoding="UTF-8"?>
    <kpml-response xmlns="urn:ietf:params:xml:ns:kpml-response" version="1.0" code="200" text="OK" suppressed="false" forced_flush="false" digits="8" tag="Backspace OK"/>
    00869637.001 |14:58:14.263 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.50.16.1 on port 52910 index 2748
    [46252,NET]
    SIP/2.0 200 OK
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK0000310f
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    To: <sip:[email protected]>;tag=480227084
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    Call-ID: [email protected]
    CSeq: 1002 NOTIFY
    Server: Cisco-CUCM10.5
    Content-Length: 0
    +++ Finally we get the last digit ++++
    00869638.002 |14:58:14.390 |AppInfo  |SIPTcp - wait_SdlReadRsp: Incoming SIP TCP message from 10.50.16.1 on port 52910 index 2748 with 877 bytes:
    [46253,NET]
    NOTIFY sip:[email protected]:5060 SIP/2.0
    Via: SIP/2.0/TCP 10.50.16.1:52910;branch=z9hG4bK00006c1c
    To: <sip:[email protected]>;tag=480227084
    From: <sip:[email protected]>;tag=544e42f26d0b001f0000092c-0000070a
    Call-ID: [email protected]
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    CSeq: 1003 NOTIFY
    Event: kpml
    Subscription-State: active; expires=7200
    Max-Forwards: 70
    Contact: <sip:[email protected]:52910;transport=TCP>
    Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE,SUBSCRIBE
    Content-Length: 209
    Content-Type: application/kpml-response+xml
    Content-Disposition: session;handling=required
    <?xml version="1.0" encoding="UTF-8"?>
    <kpml-response xmlns="urn:ietf:params:xml:ns:kpml-response" version="1.0" code="200" text="OK" suppressed="false" forced_flush="false" digits="0" tag="Backspace OK"/>
    Once digit collection is completed CUCM proceeds to finalise its digit analysis process.
    Note that digit analysis is carried out for each digit that is recieved. I have only included the final DA here
    00869648.003 |14:58:14.391 |AppInfo  |Digit Analysis: star_DaReq: Matching SIP URL, Numeric User, user=4080
    00869648.004 |14:58:14.391 |AppInfo  |Digit Analysis: getDaRes data: daRes.ssType=[0] Intercept DAMR.sstype=[0], TPcount=[0], DAMR.NotifyCount=[0], DaRes.NotifyCount=[0]
    00869648.005 |14:58:14.391 |AppInfo  |Digit Analysis: getDaRes - Remote Destination [4080] isURI[0]
    00869648.012 |14:58:14.391 |AppInfo  |Digit analysis: match(pi="2", fqcn="9106", cn="9106",plv="5", pss="", TodFilteredPss="", dd="4080",dac="0")
    00869648.013 |14:58:14.391 |AppInfo  |Digit analysis: analysis results
    00869648.014 |14:58:14.391 |AppInfo  ||PretransformCallingPartyNumber=9106
    |CallingPartyNumber=9106
    |DialingPartition=
    |DialingPattern=4XXX
    |FullyQualifiedCalledPartyNumber=4080
    |DialingPatternRegularExpression=(4[0-9][0-9][0-9])
    |DialingWhere=
    +++++Once this is done CUCM then proceeds to send the call out to to the intended destination as configured in the RL ++++
    00869701.001 |14:58:14.435 |AppInfo  |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.250.0.13 on port 5060 index 2754
    [46256,NET]
    INVITE sip:[email protected]:5060 SIP/2.0
    Via: SIP/2.0/TCP 10.28.132.111:5060;branch=z9hG4bKce931ee3d74
    From: "Emre ESEN" <sip:[email protected]>;tag=16726~813ee89e-33db-4d58-9f6a-61542cc840ee-24419585
    To: <sip:[email protected]>
    Date: Mon, 16 Feb 2015 12:58:14 GMT
    Call-ID: [email protected]
    Supported: timer,resource-priority,replaces

Maybe you are looking for