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
DooSo 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
LuisLuis,
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!
~AndrewThe 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? -
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. -
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 ?
MaIs 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 11iR1Hi 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 CdfcHere 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
-
HOW DO I SET UP MY FAX for a HP PHOTOSMART PLUS B210 ?
HOW DO I SET UP MY FAX FOR A HP PHOTOSMART PLUS B210 EPRINTER ?
-
How to do the second search in the Result set? Thanks
Hi: I am going to implement a function so called "search in the result", with Tomcat 5 and Mysql 4.11 The user will give out some conditions first , with these conditions, do the first search. Then they give some other conditions to do the advance se
-
Error connecting Lightroom to Facebook?
Trying to setup authorization of Facebook I get an error " Opps - something went wrong. We are working on getting it fixed as soon as we can." This has done this for several days. Any ideas and is anyone else having same problem?
-
SCOM 2012 R2 & Exchange Server 2010 SP3 - Mailbox services not monitored
Having done everything depicted in Exchange Server 2010 MP I still have trouble with some Exchange services - they are in not monitored state (five days passed): Mailbox All Database Services - Default-First-Site-Name Mailbox Database Service - Manag
-
We should be able to separately search for PDFs or PDF Portfolios
PDFs and PDF Porfolios are not the same. We should be able to separately search for them. At least Bridge should be able to identify them. Thanks, Michael