Oracle Messaging Gateway vs. Oracle Procedural Gateway

What is difference between Oracle Messaging Gateway for IBM MQSeries and Oracle Procedural Gateway for IBM MQSeries? Which one is the best solution for IBM WebSphere MQ integration from architecture design point of view? Does anyone have any documentation on comparing Oracle Messaging Gateway for IBM MQSeries with Oracle Procedural Gateway for IBM MQSeries, for example, pros and cons etc?
Any help will be greatly appreciated.
Yang

Dear Yang!
I have the same problem considering the two possibilities to connect ibm with oracle...
Did you get some useful information or do you have some experience now? If yes could you please update the post!
Thanks
Markus

Similar Messages

  • Using oracle procedural gateway to connect to mq series

    Hi,
    I am working on setting up my connection to export data from oracle database to db2 using mq-series.
    MQ-Series client software and oracle procedural gateway v9 are installed on HP-UX .
    initsid.ora & initsid.gtwboot file for the gateway are configured. listener.ora and tnsnames.ora are also configured and running.
    I created a dblink and then tried to test my connection using the test scripts given by IBM.
    I got the following error,
    ORA-04052: error occurred when looking up remote object [email protected]
    ORA-00604: error occurred at recursive SQL level 1
    ORA-28509: unable to establish a connection to non-Oracle system
    ORA-02063: preceding line from DCY3
    I generated a trace and I got the following information from listener.trc
    nsopen: opening transport...
    nttcnp: Validnode Table IN use; err 0x0
    nttcnp: getting sockname
    nttcnr: waiting to accept a connection.
    nttcnr: getting sockname
    nttvlser: valid node check on incoming node 172.25.228.7
    nttvlser: Accepted Entry: 172.25.228.7
    nttcon: set TCP_NODELAY on 11
    nsopen: transport is open
    nsnainit: inf->nsinfflg[0]: 0xd inf->nsinfflg[1]: 0xd
    nsopen: global context check-in (to slot 4) complete
    nsanswer: deferring connect attempt; at stage 5
    nscon: doing connect handshake...
    nscon: got NSPTCN packet
    nsevdansw: exit
    nsbeqaddr: connecting...
    sntpcall: About to exec /u46/oracle/app/oracle/product/bin/pg4mqc90drv
    sntpcall: detaching from parent with additional fork
    sntpcall: only 0 bytes read
    sntpcall: Can't read from pipe; err[1] = 32
    nserror: nsres: id=4, op=72, ns=12547, ns2=12560; nt[0]=517, nt[1]=32, nt[2]=0;
    ora[0]=0, ora[1]=0, ora[2]=0
    nscon: sending NSPTRF packet
    nstimarmed: no timer allocated
    nsclose: closing transport
    nsclose: global context check-out (from slot 4) complete
    nsglecmd: Deallocating cxd 0x40045ef0.
    Listener.log gave me the following information,
    12-JAN-2010 14:47:34 * (CONNECT_DATA=(SID=dcy3)) * (ADDRESS=(PROTOCOL=tcp)(HOST=
    172.25.228.7)(PORT=59501)) * establish * dcy3 * 12500
    TNS-12500: TNS:listener failed to start a dedicated server process
    TNS-12547: TNS:lost contact
    TNS-12560: TNS:protocol adapter error
    TNS-00517: Lost contact
    HPUX Error: 32: Broken pipe
    I researched online and made sure that I have enough swap,memory on my OS.I increased the value for processes in init.ora file.
    My log files have not exceeded the maximum limit.
    The trace shows that my listener is loosing contact when it is trying to read the driver from /u46/oracle/app/oracle/product/bin/pg4mqc90drv.
    I am not sure how to proceed from this point,though I have a thought of relinking my libraries in oracle.
    Can anyone give any information on this.

    Hi,
    listener.ora,
    DCY3LSNR =
    (ADDRESS_LIST =
    (ADDRESS =
    (PROTOCOL=IPC)
    (KEY=ORAIPC)
    (ADDRESS =
    (PROTOCOL=TCP)
    (HOST=fngtest)
    (PORT=1414)
    SID_LIST_DCY3LSNR =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME=DCY3)
    (ORACLE_HOME=/u46/oracle/app/oracle/product)
    (PROGRAM=pg4mqc90drv)
    STARTUP_WAIT_TIME_DCY3LSNR=0
    CONNECT_TIMEOUT_DCY3LSNR=1000
    TRACE_LEVEL_DCY3LSNR=4
    TRACE_DIRECTORY_DCY3LSNR=/u46/oracle/app/oracle/product/network/trace
    TRACE_FILE_DCY3LSNR=listener
    LOG_DIRECTORY_DCY3LSNR=/u46/oracle/app/oracle/product/network/log
    LOG_FILE_DCY3LSNR=listener
    $ cat initDCY3.ora
    #===========================================================================
    # GATEWAY INITIALIZATION FILE:
    # Oracle Procedural Gateway for IBM MQSeries Client (pg4mqc90).
    #===========================================================================
    SET HS_DB_NAME=
    SET HS_DB_DOMAIN=
    SET LOG_DESTINATION=/u46/oracle/app/oracle/product/pg4mqseries/log/DCY3.log
    SET QUEUE_MANAGER=DCY3
    SET AUTHORIZATION_MODEL=RELAXED
    SET TRANSACTION_MODEL=SINGLE_SITE
    SET TRANSACTION_LOG_QUEUE=tx_queue_name
    SET TRANSACTION_RECOVERY_USER=rec_user
    SET TRANSACTION_RECOVERY_PASSWORD=rec_password
    SET TRACE_LEVEL=0
    $ cat initDCY3.gtwboot
    #============================================================================
    # GATEWAY BOOT FILE:
    # Oracle Procedural Gateway for IBM MQSeries Client (pg4mqc90).
    #============================================================================
    GATEWAY_SID=DCY3
    SERVER_PATH=/u46/oracle/app/oracle/product/bin/pg4mqc90
    LOG_DESTINATION=/u46/oracle/app/oracle/product/pg4mqseries/log/DCY3boot.log
    LD_LIBRARY_PATH=/usr/lib:/opt/mqm/lib:/u46/oracle/app/oracle/product/lib
    MQSERVER=FNGTEST.DCY3/TCP/TCPIP03
    #MQCCSID=850
    #MODE=DEBUG
    I have pasted my listener.ora and init files.
    Can anyone pls give me more information on this.

  • Sending message from oracle to middleware through oracle messaging gateway

    Hi,
    I am very new to oracle AQ and oracle messaging gateway. I am actually trying to propagate a message from oracle to middleware through oracle messaging gateway.
    I have created the link between oracle messaging gateway and middleware(IBM Websphere).
    1.*Created an object type with a single attribute of type sys.xmltype*.
    create or replace type xpctas_type as object(payload sys.xmltype);
    2.*Created a qtable with payload type as xpctas_type, a queue and started the queue.*begin
    dbms_aqadm.create_queue_table(
    queue_table => 'xpctas_qtab',
    queue_payload_type => 'xpctas_type',
    multiple_consumers => TRUE
    dbms_aqadm.create_queue(queue_name =>'xpctas_q',
    queue_table => 'xpctas_qtab',
    max_retries => 16);
    dbms_aqadm.start_queue('xpctas_q');
    end;
    3.*Created a transformation that converts user defined type xpctas_type to messaging gateway canonical type sys.MGW_BASIC_MSG_T.*
    For this I created a function that converts xpctas_type to messaging gateway canonical type sys.MGW_BASIC_MSG_T.
    CREATE OR REPLACE FUNCTION APPS.order_2_basic(my_order in xpctas_type)
    RETURN sys.mgw_basic_msg_t
    IS
    v_xml XMLTYPE;
    v_text varchar2(4000);
    v_clob CLOB;
    v_basic sys.mgw_basic_msg_t;
    text_body sys.mgw_text_value_t;
    header     sys.mgw_name_value_array_t;
    BEGIN
    v_xml := XMLTYPE.createXML(my_order,NULL,NULL);
    v_basic := sys.mgw_basic_msg_t.construct;
    header := sys.mgw_name_value_array_t(sys.mgw_name_value_t.construct_integer('MGW_MQ_characterSet','1208'),
    sys.mgw_name_value_t.construct_integer('MGW_MQ_priority', '7'));
    IF(LENGTH(v_xml.getstringval())>0 AND LENGTH(v_xml.getstringval())<=4000) THEN
    v_text := v_xml.getStringVal();
    text_body := sys.mgw_text_value_t(v_text,NULL);
    ELSE
    dbms_lob.createtemporary(v_clob,TRUE,dbms_lob.session);
    v_clob:=v_xml.getClobVal();
    text_body := sys.mgw_text_value_t(NULL,v_clob);
    dbms_lob.freetemporary(v_clob);
    END IF;
    v_basic:=sys.mgw_basic_msg_t(header,text_body,NULL);
    RETURN v_basic;
    END order_2_basic;
    begin
    dbms_transform.create_transformation(
    schema => 'apps',
    name => 'order_to_basic',
    from_schema => 'apps',
    from_type => 'xpctas_type',
    to_schema => 'sys',
    to_type => 'mgw_basic_msg_t',
    transformation => 'Apps.order_2_basic(source.user_data)');
    end;
    4.     Registered a foreign queue.
    declare
    v_options sys.mgw_properties;
    gv_mq_queue_name VARCHAR2(32);
    begin
    gv_mq_queue_name := 'MB.O2C.SOFTWARESOLUTION';
    v_options := sys.mgw_properties(
    sys.mgw_property('MQ_openOptions', '2066') );
    dbms_mgwadm.register_foreign_queue(
    name => 'destq', -- MGW foreign queue name
    linkname => 'mqlink', -- name of link to use
    provider_queue => RTRIM(gv_mq_queue_name), -- name of MQSeries queue
    domain => dbms_mgwadm.DOMAIN_QUEUE, -- single consumer queue
    options => v_options );
    end;
    5.     Added a subscriber with transformation.
    begin
    dbms_mgwadm.add_subscriber(
    subscriber_id => 'sub_aq2mq', -- MGW subscriber name
    propagation_type => dbms_mgwadm.outbound_propagation,
    queue_name => 'apps.xpctas_q',
    destination => 'destq@mqlink',
    transformation => 'apps.order_to_basic');
    end;
    6.     Added a scheduler
    begin
    dbms_mgwadm.schedule_propagation(
    -- schedule name
    schedule_id => 'sch_aq2mq',
    -- outbound propagation
    propagation_type => dbms_mgwadm.outbound_propagation,
    -- AQ queue name
    source =>'apps.xpctas_q',
    -- MGW foreign queue with link
    destination =>'destq@mqlink');
    -- The remaining fields currently not used by MGW
    end;
    7.     Enqueued a user defined data type into the qtable.
    declare
    l_xmlstring varchar2(2000);
    l_payload sys.xmltype;
    my_order xpctas_type;
    enqueue_options DBMS_AQ.enqueue_options_t;
    message_properties DBMS_AQ.message_properties_t;
    msgid RAW( 16 );
    v_num Number;
    begin
    SELECT '<?xml version="1.0" encoding="UTF-8" ?>
    <Q1:XXRFG_PRCS_CNCT_TO_ASSETS_STG xmlns:Q1="http://www.ibm.com/websphere/crossworlds/2002/BOSchema/XXRFG_PRCS_CNCT_TO_ASSETS_STG" version="3.0.0" verb="Create" locale="en_US.UTF-8" delta="false">
    <Q1:STAGING_ID>221</Q1:STAGING_ID>
    <Q1:SW_INSTANCE_ID>18595755</Q1:SW_INSTANCE_ID>
    <Q1:MC_INSTANCE_ID>194734</Q1:MC_INSTANCE_ID>
    <Q1:OPCO>NUK</Q1:OPCO>
    <Q1:RELATIONSHIP_FLAG>N</Q1:RELATIONSHIP_FLAG>
    <Q1:RELATIONSHIP_TYPE>Connected To</Q1:RELATIONSHIP_TYPE>
    <Q1:ObjectEventId />
    </Q1:XXRFG_PRCS_CNCT_TO_ASSETS_STG>'
    INTO l_xmlstring
    FROM dual;
    SELECT XMLTYPE(l_xmlstring)
    INTO l_payload
    FROM dual;
    my_order:=xpctas_type(l_payload);
    dbms_output.put_line(my_order.payload.getstringval());
    DBMS_AQ.enqueue( queue_name => 'APPS.xpctas_q',
    enqueue_options => enqueue_options,
    message_properties => message_properties,
    payload => my_order,
    msgid => msgid
    COMMIT;
    END;
    As soon as I enqueued the message the subscriber picked the message and sent it to middleware. I found the below message in the middleware
    MD            ÿÿÿÿ      ¸  MQSTR         AMQ HBU473QC61  PTÀ+H^                                                                            HBU473QC61                                      mqm                                                                                                        2012112109335869                                       ÿÿÿÿ
    *<XPCTAS_TYPE><PAYLOAD><Q1:XXRFG_PRCS_CNCT_TO_ASSETS_STG xmlns:Q1="http://www.ibm.com/websphere/crossworlds/2002/BOSchema/XXRFG_PRCS_CNCT_TO_ASSETS_STG" version="3.0.0" verb="Create" locale="en_US.UTF-8" delta="false">*
    *<Q1:STAGING_ID>221</Q1:STAGING_ID>*
    *<Q1:SW_INSTANCE_ID>18595755</Q1:SW_INSTANCE_ID>*
    *<Q1:MC_INSTANCE_ID>194734</Q1:MC_INSTANCE_ID>*
    *<Q1:OPCO>NUK</Q1:OPCO>*
    *<Q1:RELATIONSHIP_FLAG>N</Q1:RELATIONSHIP_FLAG>*
    *<Q1:RELATIONSHIP_TYPE>Connected To</Q1:RELATIONSHIP_TYPE>*
    *<Q1:ObjectEventId/>*
    *</Q1:XXRFG_PRCS_CNCT_TO_ASSETS_STG>*
    *</PAYLOAD></XPCTAS_TYPE>*
    It has some junk data in the begining. How can I remove this junk data?? Any help provided on this would be of great help.
    Experts on oracle mesaging gateway and AQ, Please help.
    Thanks & Regards,
    Sachin

    Hello,
    your setup of the message gateway seems to be ok.
    Did you check the corresponding versions of the client libraries (*.jar) ? These are the libraries on
    db server side (e.g. aqapi.jar, based on your CLASSPATH entries in file "mgw.ora") and for the IBM MQ jars.
    Kind regards,
    WoG

  • Send JMS messages from Oracle Procedure

    Hi
    I need to write an Oracle procedure that would send a JMS message. So please share your thoughts on how this can be done in Oracle.
    thank you

    sdk11 wrote:
    Hi
    I need to write an Oracle procedure that would send a JMS message. So please share your thoughts on how this can be done in Oracle.
    thank youhttp://www.lmgtfy.com/?q=Oracle+procedure+that+would+send+a+JMS+message
    Handle:      sdk11
    Status Level:      Newbie
    Registered:      Jan 13, 2010
    Total Posts:      56
    Total Questions:      30 (27 unresolved)
    why so many unanswered questions?
    Edited by: sb92075 on Jan 12, 2012 8:44 AM

  • Messaging Gateway agent not starting

    I have configured Messaging gateway for connecting Oracle AQ to Websphere MQ. Oracle version is Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production on Linux. I was able to execute all the steps as documented in user's guide without any issues. However now when I try to start the Messaging gateway agent, it gives following error ORA-28575: unable to open RPC connection to external procedure agent.
    I have tried changing listener.ora without any luck. Is there any compatibility issue between 64-bit linux and MGW? Enclosed below are the entries from my listener.ora
    # Define "where" to listen
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = AVAQD))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    (ADDRESS = (PROTOCOL = TCP)(Host = adaq03.oneabbott.com)(Port = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    # Pre-Defined Services
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SDU = 1460)
    (SID_NAME = AVAQD)
    (GLOBAL_DBNAME = AVAQD)
    (SERVICE_NAME = AVAQD.world)
    (ORACLE_HOME = /ofa/product/10.2.0/DB)
    (SID_DESC =
    (SID_NAME = mgwextproc)
    (ENVS = EXTPROC_DLLS=/oracle_home/lib32/libmgwagent.so, LD_LIBRARY_PATH=/oracle_home/jdk/jre/lib/i386:/oracle_home/jdk/jre/lib/i386/server:/oracle_home/lib32)
    (ORACLE_HOME = /ofa/product/10.2.0/DB)
    (PROGRAM = /ofa/product/10.2.0/DB/bin/extproc32)
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = /ofa/product/10.2.0/DB)
    # (ENVS=EXTPROC_DLLS=/ofa/product/10.2.0/DB/lib32/av_extproc_LINUX.so)
    (PROGRAM = extproc)
    Thanks in advance
    Kiran

    Hi,
    I got this working finally. All of the issues were mainly related to properly setting environment variable LD_LIBRARY_PATH. Oracle Metalink helped in solving those issues so I recommend searching there first if you are getting stuck.
    Regards
    Kiran

  • Messaging Gateways (MQ for example)

    Hi there,
    Is it possible to use Enterprise Messaging Gateways on standard edition Oracle.
    I would like to give my clients the option of what version they wish to use but need to connect to MQ Series.
    If the Oracle Product does not allow this, are there any other 'Gateway' providors that do develop such a bridge for the Standard edition.
    Many Thanks

    Wrong place to ask this.
    This forum is for the Sun MQ, not the IBM MQ. I would suggest, either going to the IBM site for this, or to the http://forum.java.sun.com/forum.jspa?forumID=29 on the JMS specifications.
    TE

  • AQ Messaging Gateway

    Hi all,
    I am testing Oralce AQ messaging gateway for IBM Websphere MQ. I followed the Oralce MGW setup guide and set up the admin user and the agent user. All was OK so far. But when I exec dbms_mgwadm.startup, the agent would not start. I did see the agent_status of the mgw_gateway view had START_SCHEDULED and STARTING UNREACHABLE. Then it turned to NOT_STARTED. The log shows this: MGW Engine 0 EXCEPTION main
    java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver. I check my Oracle install, and the file is there. And I also has this line for the CLASSPATH in the mgw.ora file: C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar (the very first value on the line). I have looked in the /jdbc/lib folder 20 times now and the ojdbc14.jar file is there. Why am getting the mainjava.lang.NoClassDefFoundError? Please help!
    Ben

    OK, it turned out that the Oracle installation MGW sample - sample_mgw.ora file has the classpath line wrong:
    from the sample file
    set CLASSPATH=/myOracleHome/jdbc/lib/ojdbc14.jar:/myOracleHome/jdk/jre/lib/i18n.jar:/myOracleHome/jdk/jre/lib/rt.jar:/myOracleHome/sqlj/lib/runtime12.jar:/myOracleHome/jlib/orai18n.jar:/myOracleHome/jlib/jta.jar:/myOracleHome/rdbms/jlib/jmscommon.jar:/myOracleHome/rdbms/jlib/aqapi13.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib:/opt/mqm/java/lib/connector.jar
    the colon (:) between each jar file location should be a semi-colon (;). I finally spotted that and replaced it with a semi-colun (;) and now my agent starts running!
    Ben

  • How to get Messaging Gateway working with MQ Serieson 9.2 on NT

    I wonder if you can help me a little more to get a pilot installation running on NT.
    I'm trying to get the Message Gateway set up from a 9i Rel2 instance on Windows NT 4.0 SP6a talking to a remote MQ Series Q. The docs are confusing,as they don't seem to be based on 9i Rel 2.
    This is my current config:
    tnsnames.ora:
    MGW_AGENT =(DESCRIPTION=(ADDRESS_LIST=
                   (ADDRESS= (PROTOCOL=IPC)(KEY=EXTPROC_KEY)))
              (CONNECT_DATA = (SID=mgwextproc) (PRESENTATION=RO)))
    extproc_connection_data = (DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = extproc_key))
    (CONNECT_DATA = (SID = extproc)))
    listener.ora
    listener =( address_list =
    (address = (protocol = tcp)(host = swr851)(port = 1521))
    (address = (protocol = ipc)(key = extproc_key)))
    sid_list_listener = (sid_list =
    (sid_desc =     (global_dbname = raj1)(oracle_home = d:\oracle\902)(sid_name = raj1))
    (sid_desc =     (program = extproc)(sid_name = extproc)))
    mgw_ora
    log_directory=d:\oracle\902\mgw\log
    log_level = 2
    set LD_LIBRARY_PATH=d:\oracle\902\jdk\jre\lib;d:\oracle\902\rdbms\lib;d:\oracle\902\lib;c:\program files\ibm\mqseries\java\lib
    set MGW_PRE_PATH=D:\oracle\902\jdk\jre\bin\classic
    set CLASSPATH=D:\oracle\902\jdbc\lib\classes12.zip;d:\oracle\902\jdk\jre\lib\i18n.jar;d:\oracle\902\jdk\jre\lib\rt.jar;d:\oracle\902\sqlj\lib\runtime12.zip;d:\oracle\902\jdbc\lib\nls_charset12.zip;d:\oracle\902\sqlj\lib\translator.zip;d:\oracle\902\jdbc\lib\nls_charset12.zip;d:\oracle\902\mgw\classes\mgw.jar;c:\program files\ibm\mqseries\java\lib
    set ORACLE_SID=raj1
    when I run dbms_mgwadm.startup, I get ORA-32830: result code -3 returned by Messaging Gateway agent as the last_error_msg when I query mgw_gateway. There is no log generated in $ORACLE_HOME\mgw\log. If I rerun dbms_mgwadm.startup, the agent is reachable - what could be wrong ?

    Hi,
    -3...An error occurred creating the MGW log file. Verify that the log directory is writeable. The default location is <ORACLE_HOME>/mgw/log.
    In documentations is described the following on the link:
    http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96587/qfaqs.htm
    What if MGW_GATEWAY view shows LAST_ERROR_MSG of "ORA-32830: result code <value> returned by Messaging Gateway agent?"
    The result code may be one of the following:
    -1...An error occurred starting the Java Virtual Machine (JVM). Check the MGW log file for an entry that contains one of the following lines.
    Can't create Java VM Verify that the Java version you are using is correct. Verify that your operating system version and patch level are sufficient for the JDK version. Verify that you are using a reasonable value for the JVM heap size. The heap size is specified by the max_memory parameter of dbms_mgwadm.alter_agent.
    Can't find class oracle.mgw.engine.Agent Verify that the CLASSPATH set in mgw.ora contains mgw.jar. For example:
    set CLASSPATH=<ORACLE_HOME>/mgw/classes/mgw.jar
    -2...An error occurred reading mgw.ora. Verify that the file is readable.
    -3...An error occurred creating the MGW log file. Verify that the log directory is writeable. The default location is <ORACLE_HOME>/mgw/log.
    -100...The MGW agent JVM encountered a runtime exception or error on startup.
    -101...The MGW agent shut down due to a fatal error. Check the MGW log file.
    Zdenek.

  • Issu for running insert statement in oracle procedure.

    Hi expert,
    I ran a oracle procedure with a insert statement inside as:
    insert into table1 select....
    but I got error message related to this insert statement as "SQLERRM= ORA-08103: object no longer exists"
    I ran this statement separately in toad, no error message, but no data result from this execute.
    please tell how to fix this issue.
    Many Thanks,
    Edited by: 918440 on 27-Jun-2012 8:04 AM

    Hi friend,
    my insert statement is as follows:
            INSERT INTO HIROC_RU_FACT_S   
            select   
                    pp.policy_fk,  
                    pp.transaction_log_fk,  
                    p.policy_no,  
                    p.policy_type_code,   
                    hiroc_rpt_user.hiroc_get_entity_name(pp.policy_fk,'POLHOLDER')  policy_holder,  
                    pp.risk_fk,   
                    r.risk_base_record_fk,   
                    r.entity_fk,  
                    hiroc_sel_entity_risk_name2 (pp.risk_fk,r.entity_fk)  risk_name,   
                    substr(trim(nvl(r.county_code_used_to_rate,pth.issue_state_code)),1,2) rating_state_code,  
                    hiroc_get_province_name(substr(trim(nvl(r.county_code_used_to_rate,pth.issue_state_code)),1,2), 'PROVINCE_CODE', 'L') rating_state_name,  
                    hiroc_get_provicne_pol_prefix(substr(trim(nvl(r.county_code_used_to_rate,pth.issue_state_code)),1,2),p.policy_type_code) rating_prov_pol_prefix,   
                    nvl(r.risk_cls_used_to_rate,pth.peer_groups_code) rating_peer_group_code,  
                    hiroc_get_lookup_desc('PEER_GROUP',nvl(r.risk_cls_used_to_rate,pth.peer_groups_code),'L')  rating_peer_group_name,   
                    pth.policy_term_history_pk,   
                    pth.term_base_record_fk,   
                    to_char(pth.effective_from_date,'yyyy') term_effective_year,   
                    c.coverage_pk,   
                    c.coverage_base_record_fk,   
                    pc.coverage_code,   
                    c.product_coverage_code,   
                    pc.long_description,   
                    pp.coverage_component_code,  
                    c.effective_from_date,   
                    c.effective_to_date,  
                    cls.coverage_code coverage_class_code,   
                    cls.coverage_long_desc coverage_class_long_desc,   
                    decode(pp.coverage_component_code ,'GROSS',cls.exposure_unit,null) exposure_unit, --hiroc_get_expos_units_by_cov(c.coverage_pk,pc.coverage_code,c.effective_from_date,c.effective_to_date) exposure_unit,   
                    decode(pp.coverage_component_code ,'GROSS',cls.number_of_patient_day,null) number_of_patient_day,   
                    pth.effective_from_date  term_eff_from_date,   
                    pth.effective_to_date term_eff_to_date,    
                    pp.premium_amount premium_amount,    
                    (case when (pc.coverage_code in ('CP','MC1','MC2','MC3','MC4','HR','F') or pc.coverage_code like 'ST%') and  
                                  pp.coverage_component_code != 'RISKMGMT' then     
                            (nvl(pp.premium_amount,0))  
                        else  
                            0  
                    end) primary_premium,   
                    (hiroc_get_risk_units(hiroc_get_provicne_pol_prefix(substr(trim(nvl(r.county_code_used_to_rate,pth.issue_state_code)),1,2),p.policy_type_code)-- rating_prov_pol_prefix  
                                        ,nvl(r.risk_cls_used_to_rate,pth.peer_groups_code) -- rating_peer_group_code  
                                        ,cls.coverage_code --coverage_class_code  
                                        ,decode(pp.coverage_component_code ,'GROSS',cls.exposure_unit,null)  
                                        ,pp.premium_amount  
                                        ,(case when (pc.coverage_code in ('CP','MC1','MC2','MC3','MC4','HR','F') or pc.coverage_code like 'ST%') and  
                                                      pp.coverage_component_code != 'RISKMGMT' then     
                                                (nvl(pp.premium_amount,0))  
                                            else  
                                                0  
                                         end)  -- primary_premium  
                                        ,p.policy_type_code           
                                        ,trunc(pth.effective_to_date))) risk_units  
             from     proddw_mart.rmv_territory_makeup tm,  
                      proddw_mart.rmv_premium_class_makeup pcm,  
                      proddw_mart.rmv_product_coverage pc,  
                      proddw_mart.rmv_coverage c,  
                      proddw_mart.rmv_risk r,  
                      proddw_mart.rmv_policy_term_history pth,  
                      proddw_mart.rmv_policy p,  
                      proddw_mart.rmv_transaction_log tl,  
                      proddw_mart.rmv_policy_premium pp,  
                      (select  /* +rule */  
                               p.policy_no,  
                               p.policy_start_date,  
                               p.policy_end_date,   
                               r.risk_pk,  
                               r.risk_description,  
                               c.coverage_pk,  
                               c.parent_coverage_base_record_fk,  
                               pc.parent_product_covg_code,  
                               pc.coverage_code,  
                               pc.short_description coverage_short_desc,   
                               pc.long_description coverage_long_desc,  
                               c.exposure_unit,  
                               pc.exposure_basis_code,  
                               c.number_of_patient_day,  
                               p.policy_start_date policy_effective_date,  
                               p.policy_end_date policy_expiry_date,  
                               c.effective_from_date,  
                               c.effective_to_date,  
                               to_char(c.effective_from_date,'YYYY') class_eff_year  
                        from   proddw_mart.odwr_coverage_only      c  
                              ,proddw_mart.odwr_product_coverage   pc  
                              ,proddw_mart.odwr_risk               r  
                              ,proddw_mart.odwr_policy             p  
                        where  pc.code                 = c.product_coverage_code  
                          and  pc.parent_product_covg_code is not null                 -- coverage classes only  
                          and  r.risk_pk = c.risk_base_record_fk  
                          and  c.accounting_to_date = to_date('1/1/3000','mm/dd/yyyy') -- only open records  
                          and  c.base_record_b = 'N'  
                          and  p.base_record_b = 'N'  
                          and  p.policy_pk = r.policy_fk  
                          and  p.accounting_to_date = to_date('1/1/3000','mm/dd/yyyy')  -- only open records  
                       group by p.policy_no,  
                               p.policy_start_date,  
                               p.policy_end_date,   
                               r.risk_pk,  
                               r.risk_description,  
                               c.coverage_pk,  
                               c.parent_coverage_base_record_fk,  
                               pc.parent_product_covg_code,  
                               pc.coverage_code,  
                               pc.short_description, -- coverage_short_desc,   
                               pc.long_description, -- coverage_long_desc,  
                               c.exposure_unit,  
                               pc.exposure_basis_code,  
                               c.number_of_patient_day,  
                               p.policy_start_date, -- policy_effective_date,  
                               p.policy_end_date, -- policy_expiry_date,  
                               c.effective_from_date,  
                               c.effective_to_date,  
                               to_char(c.effective_from_date,'YYYY')-- class_eff_year  
                      ) cls  
                where    tm.risk_type_code = r.risk_type_code  
                and        tm.county_code = r.county_code_used_to_rate  
                and        tm.effective_from_date <= pp.rate_period_from_date  
                and        tm.effective_to_date   >  pp.rate_period_from_date  
                and        pcm.practice_state_code (+) = r.practice_state_code  
                and        pcm.risk_class_code (+) = r.risk_cls_used_to_rate  
                and        nvl(pcm.effective_from_date, pp.rate_period_from_date) <= pp.rate_period_from_date  
                and        nvl(pcm.effective_to_date, to_date('01/01/3000','mm/dd/yyyy')) > pp.rate_period_from_date  
                and        pc.code = c.product_coverage_code  
                and        c.base_record_b = 'N'  
                and        ( c.record_mode_code = 'OFFICIAL'  
                         and (c.closing_trans_log_fk is null or  
                              c.closing_trans_log_fk != tl.transaction_log_pk)  
                         or c.record_mode_code = 'TEMP'  
                         and c.transaction_log_fk = tl.transaction_log_pk )  
                and   c.parent_coverage_base_record_fk is null  
                and        c.effective_from_date  <  c.effective_to_date  
                and        c.effective_from_date  <= pp.rate_period_from_date  
                and        c.effective_to_date    >  pp.rate_period_from_date  
                and   c.accounting_from_date <= tl.accounting_date  
                and   c.accounting_to_date   >  tl.accounting_date  
                and        c.coverage_base_record_fk=pp.coverage_fk  
                and        r.base_record_b = 'N'  
                and        ( r.record_mode_code = 'OFFICIAL'  
                        and (r.closing_trans_log_fk is null or  
                             r.closing_trans_log_fk != tl.transaction_log_pk)  
                        or r.record_mode_code = 'TEMP'  
                        and r.transaction_log_fk = tl.transaction_log_pk )  
                and        r.effective_from_date  <  r.effective_to_date  
                and        r.effective_from_date  <= pp.rate_period_from_date  
                and        r.effective_to_date    >  pp.rate_period_from_date  
                and   r.accounting_from_date <= tl.accounting_date  
                and   r.accounting_to_date   >  tl.accounting_date  
                and         r.risk_base_record_fk = pp.risk_fk  
                and        pth.base_record_b = 'N'  
                and        ( pth.record_mode_code = 'OFFICIAL'  
                        and (pth.closing_trans_log_fk is null or  
                             pth.closing_trans_log_fk != tl.transaction_log_pk)  
                        or pth.record_mode_code = 'TEMP'  
                        and pth.transaction_log_fk = tl.transaction_log_pk )  
                and        pth.accounting_from_date <= tl.accounting_date  
                and        pth.accounting_to_date   >  tl.accounting_date  
                and        pth.term_base_record_fk = pp.policy_term_fk  
                and   p.policy_pk = pp.policy_fk  
                and        tl.transaction_log_pk  =  pp.transaction_log_fk  
                and   pp.active_premium_b = 'Y'  
                and        pp.rate_period_type_code in ('CS_PERIOD','SR_PERIOD')  
                and        pp.rate_period_to_date > pp.rate_period_from_date  
                and tl.accounting_date <= sysdate   
                and p.policy_cycle_code = 'POLICY'  
                and substr(p.policy_no,1,1) <> 'Q'  
                and tl.transaction_log_pk = (select max(pp.transaction_log_fk)  
                                               from proddw_mart.rmv_policy_premium pp,proddw_mart.rmv_transaction_log tl2  
                                              where pth.term_base_record_fk = pp.policy_term_fk  
                                                and pp.transaction_log_fk = tl2.transaction_log_pk  
                                                and tl2.accounting_date <= sysdate )    
                 and p.policy_type_code in ('LIABCRIME','MIDWIFE')    
                 and pth.accounting_to_date =  to_date('01/01/3000','mm/dd/yyyy') --<<<*******  eliminates duplicates  
                 and p.policy_no = cls.policy_no  
            --     and r.risk_pk = cls.risk_pk  
                 and c.coverage_base_record_fk = cls.parent_coverage_base_record_fk(+)  
                 and  cls.effective_from_date < pth.effective_to_date -- from date less than period end date  
                 and  cls.effective_to_date   > pth.effective_from_date -- to date greater than period start date  
                 and  cls.policy_effective_date   < pth.effective_to_date -- from date less than period end date  
                 and  cls.policy_expiry_date     > pth.effective_from_date -- to date greater than period start date  
           group by pp.policy_fk,  
                    pp.transaction_log_fk,  
                    p.policy_no,  
                    p.policy_type_code,   
                    pp.risk_fk,   
                    r.risk_base_record_fk,   
                    r.entity_fk,  
                    substr(trim(nvl(r.county_code_used_to_rate,pth.issue_state_code)),1,2), -- rating_state_code,  
                    r.county_code_used_to_rate,  
                    pth.issue_state_code,  
                    nvl(r.risk_cls_used_to_rate,pth.peer_groups_code) , --  rating_peer_group_code,  
                    r.risk_cls_used_to_rate,  
                    pth.peer_groups_code,  
                    pth.policy_term_history_pk,   
                    pth.term_base_record_fk,   
                    to_char(pth.effective_from_date,'yyyy'), --term_effective_year,   
                    c.coverage_pk,   
                    c.coverage_base_record_fk,   
                    pc.coverage_code,   
                    c.product_coverage_code,   
                    pc.long_description,   
                    pp.coverage_component_code,  
                    c.effective_from_date,   
                    c.effective_to_date,  
                    cls.coverage_code, -- coverage_class_code,   
                    cls.coverage_long_desc, -- coverage_class_long_desc,   
                    decode(pp.coverage_component_code ,'GROSS',cls.exposure_unit,null),-- exposure_unit,   
                    decode(pp.coverage_component_code ,'GROSS',cls.number_of_patient_day,null), -- number_of_patient_day,   
                    pth.effective_from_date, --term_eff_from_date,   
                    pth.effective_to_date, --, --term_eff_to_date,    
                    pp.premium_amount ;Edited by: BluShadow on 27-Jun-2012 16:12
    added {noformat}{noformat} tags for readability.  PLEASE READ {message:id=9360002} AS PREVIOUSLY REQUESTED!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           &

  • How to call an Oracle Procedure and get a return value in Php

    Hi Everyone,
    Has anyone tried calling an Oracle procedure from Php using the ora functions and getting the return value ? I need to use the ora funtions (no oci)because of compatibility and oracle 7.x as the database.
    The reason why I post this here is because the ora_exec funtion is returning FALSE but the error code displayes is good. Is this a bug in the ora_exec funtion ?
    My code after the connection call is as follows:
    $cur = ora_open($this->conn);
    ora_commitoff($this->conn);
    $requestid = '144937';
    echo $requestid;
    $rc = ora_parse($cur, "begin p_ins_gsdata2
    (:requestid, :returnval); end;");
    if ($rc == true) {
    echo " Parse was successful ";
    $rc2 = ora_bind ($cur, "requestid", ":requestid", 32, 1);
    if ($rc2 == true) echo " Requestid Bind Successful ";
    $rc3 = ora_bind ($cur, "returnval", ":returnval", 32, 2);
    if ($rc3 == true) echo " Returnval Bind Successful ";
    $returnval = "0";
    $rc4 = ora_exec($cur);
    echo " Result = ".$returnval." ";
    if ($rc4 == false) {
    echo " Exec Returned FALSE ";
    echo " Error = ".ora_error($cur);
    echo " ";
    echo "ErrorCode = ".ora_errorcode($cur);
    echo "Error Executing";
    ora_close ($cur);
    The Oracle procedure has a select count from a table and it returns the number of records in that table. It's defined as:
    CREATE OR REPLACE procedure p_ins_gsdata2 (
    p_requestid IN varchar2 default null,
    p_retcode OUT varchar2)
    as
    BEGIN
    SELECT COUNT (*) INTO p_retcode
    FROM S_GSMRY_DATA_SURVEY
    WHERE request_id = p_requestid ;
    COMMIT;
    RETURN;
    END;
    Nothing much there. I want to do an insert into a table,
    from the procedure later, but I figured that I start with a select count since it's simpler.
    When I ran the Php code, I get the following:
    144937
    Parse was successful
    Requestid Bind Successful
    Returnval Bind Successful
    Result = 0
    Exec Returned FALSE
    Error = ORA-00000: normal, successful completion -- while
    processing OCI function OBNDRA
    ErrorCode = 0
    Error Executing
    I listed the messages on separate lines for clarity. I don't understand why it parses and binds o.k. but the exec returns false.
    Thanks again in advance for your help. Have a great day.
    Regards,
    Rudi

    retcode=`echo $?`is a bit convoluted. Just use:
    retcode=$?I see no EOF line terminating your input. Your flavour of Unix might not like that - it might ignore the command, though I'd be surprised (AIX doesn't).
    replace the EXEC line with :
    select 'hello' from dual;
    and see if you get some output - then you know if sqlplus commands are being called from your script. You didn't mentioned whether you see the banner for sqlplus. Copy/paste the output that you get, it will give us much more of an idea.

  • OCI 22303 exception - Pass object to type Record in oracle procedure

    Recently i had my first encounter with ODP.NET and Oracle. I'm developing a a datalayer that can access a stored procedure on an Oracle database.
    The problem i'm having is the following:
    I'm using this method to pass my parameters to the procedure: http://www.codeproject.com/KB/cs/CustomObject_Oracle.aspx
    I have also attempted this approach:
    http://developergeeks.com/article/48/3-steps-to-implement-oracle-udt-in-odpnet
    I always get the message (litteraly):
    Oracle.DataAccess.Client.OracleException: OCI-22303: type &quote;PAC$WEBSHOP_PROCS&quot;.&quot;CUSTOMER_IN_RECTYPE&quot; not found.
    It sounds weird to me, but what are the &quotes doing here in the error message I see?
    Some code i use:
    OracleParameter objParam = new OracleParameter
    OracleDbType = OracleDbType.Object,
    Direction = ParameterDirection.Input,
    ParameterName = "PAC$WEBSHOP_PROCS.P_CUSTOMER_IN",
    UdtTypeName = "PAC$WEBSHOP_PROCS.WEBSHOP_PROCS.CUSTOMER_IN_RECTYPE",
    Value = card
    The information i have about the Oracle procedure:
    CREATE OR REPLACE PACKAGE PAC$WEBSHOP_PROCS IS
    TYPE CUSTOMER_IN_RECTYPE IS RECORD
    (CUS_STO_IDENTIFIER NUMBER(2)
    ,CUS_IDENTIFIER NUMBER(6)
    ,CH_IDENTIFIER NUMBER(2)
    ,CH_CARD_VERSION NUMBER(1)
    PROCEDURE PRC$WS_VALIDATE_CARD
    (P_CUSTOMER_IN IN PAC$WEBSHOP_PROCS.CUSTOMER_IN_RECTYPE
    ,P_RETURN_CODE IN OUT NUMBER
    Any help to cover my problem would be greatly appreciated.
    Thx
    Edited by: 836497 on 14-feb-2011 4:36

    The only way to call it as is would be via an anonymous plsql block, where you create the record type inside the block. Interacting with the block via ODP would be limited to scalar values.
    Here's a PLSQL example just to demonstrate. Here, v1 and v2 are bind variables of scalar type, which you'd setup/bind via ODP instead of the SQL prompt as I did, but I thought this might keep things simpler for the example.
    The other choice would be to write a wrapper procedure that takes type OBJECT that you can call from ODP, and inside that procedure convert them to/from RECORD and call the original procedure.
    Hope it helps,
    Greg
    SQL> drop package somepack;
    Package dropped.
    SQL> create package somepack as
      2  type somerectype is record(n1 number);
      3  function somefunc (v1 somerectype) return somerectype;
      4  end;
      5  /
    Package created.
    SQL>
    SQL> create package body somepack as
      2  function somefunc (v1 somerectype) return somerectype is
      3   begin
      4    return v1;
      5   end;
      6  end;
      7  /
    Package body created.
    SQL>
    SQL>
    SQL> var v1 number;
    SQL> exec :v1 := 5;
    PL/SQL procedure successfully completed.
    SQL> var v2 number;
    SQL>
    SQL>
    SQL> declare
      2   localvar1 somepack.somerectype;
      3   localvar2 somepack.somerectype;
      4  begin
      5     localvar1.n1 := :v1;
      6     localvar2 := somepack.somefunc(localvar1);
      7     :v2 := localvar2.n1;
      8  end;
      9  /
    PL/SQL procedure successfully completed.
    SQL>  print v2;
            V2
             5
    SQL>

  • Sending mail from oracle procedure

    Hi Experts,
    I want to send mail from oracle Procedure. Anybody please help me out.
    Thanks.

    BEGIN
    UTL_MAIL.send(sender => '[email protected]',
    recipients => '[email protected],[email protected]',
    cc => '[email protected]',
    bcc => '[email protected]',
    subject => 'UTL_MAIL Test',
    message => 'If you get this message it worked!');END;

  • Convert php script to oracle procedure

    To all please help me... I wanna convert php script to oracle procedure..and the script is (exp)..
    <?php
    include("../config/koneksi.php");
    $customer=$_POST['customer'];
    $tanggal1=$_POST['theDate1'];
    $tanggal2=$_POST['theDate2'];
    $no_bulan=substr($tanggal1,0,2);
    $bulan_sajah= (substr($no_bulan,0,1)=='0')? substr($no_bulan,1,1) : $no_bulan;          
    $tahun_sajah=substr($tanggal1,3,4);
    $blnkmrn=(int)$bulan_sajah;
    $thnkmrn=(int)$tahun_sajah;
    if ($blnkmrn==1) {
         $bulan_lalu=12;
         $tahun_lalu=$thnkmrn-1;}
    else {
         $bulan_lalu=$blnkmrn-1;
         $tahun_lalu=$thnkmrn;
    $bulanlalu=strval($bulan_lalu);
    $tahunlalu=strval($tahun_lalu);
    $sql = "select nip_nas from edo_customer_master_dives where standard_name='$customer'";
         $stm = ociparse($conn,$sql);
         ociexecute($stm);
         ocifetch($stm);
         $data=ociresult($stm,1);
         $sql12 = "select PRODUCT_LINE_ID,sum(REVENUE)
    from PA_FACT_REV_BILLED_CC
    where nip_nas='$data' and year_id='$tahun_sajah' and month_id='$bulan_sajah' group by PRODUCT_LINE_ID";
         $stm12 = ociparse($conn,$sql12);
         ociexecute($stm12);
         $total_revenue=0;
         $i="0";
    while (ocifetch($stm12)){
         $rev_items=ociresult($stm12,1);
         $revenue=ociresult($stm12,2);
         $sql2 = "select * from PA_FACT_REV_BILLED_CC
    where nip_nas='$data' and PRODUCT_LINE_ID='$rev_items'";
         $stm2 = ociparse($conn,$sql2);
         ociexecute($stm2);
         ocifetch($stm2);
    $tahun=ociresult($stm2,1);
    $bulan=ociresult($stm2,2);
    $nipnas=ociresult($stm2,3);
    $prod_line=ociresult($stm2,4);
    $rev_item=ociresult($stm2,5);
    //$revenue=ociresult($stm2,6);
    $query1 = "select standard_name from edo_customer_master_dives where nip_nas='$nipnas'";
         $st1 = ociparse($conn,$query1);
         ociexecute($st1);
         ocifetch($st1);
         $nama_cust=ociresult($st1,1);
         $query2 = "select prod_line_lname from parameter.p_prod_line@dwhnas where prod_line_id='$prod_line'";
         $st2 = ociparse($conn,$query2);
         ociexecute($st2);
         ocifetch($st2);
         $nama_prod_line=ociresult($st2,1);
         $query3 = "select REV_TYPE_LNAME from parameter.p_rev_type@dwhnas where REV_TYPE_ID='$rev_item'";
         $st3 = ociparse($conn,$query3);
         ociexecute($st3);
         ocifetch($st3);
         $nama_rev_item=ociresult($st3,1);
         $query4="select sum(total_usage) from PA_FACT_TRAFFIC_CC where PRODUCT_LINE_ID='$prod_line' and nip_nas='$nipnas' and year_id='$tahun_sajah' and month_id='$bulan_sajah' group by PRODUCT_LINE_ID";
         $st4 = ociparse($conn,$query4);
         ociexecute($st4);
         ocifetch($st4);
         $total_usage=ociresult($st4,1);
         $total=$revenue + $total_usage;
         echo $tahun." ".$bulan." ".$nama_cust." ".$nama_prod_line." ".$nama_rev_item." ".$revenue." ".$total_usage." ".$total."<br>";
         $total_revenue=$total_revenue+$total;
    $i++;
    echo $total_revenue;
    //cost of product
    $query5="select * from PA_FACT_TRAFFIC_CC where nip_nas='$nipnas' and year_id='$tahunlalu' and month_id='$bulanlalu'";
    $st5 = ociparse($conn,$query5);
         ociexecute($st5);
         $total1=0;
         $total2=0;
         $total3=0;
         $total4=0;
         $total5=0;
    while (ocifetch($st5)){
         $nipnas=ociresult($st5,3);
         $lineid=ociresult($st5,4);
         $itemid=ociresult($st5,5);
         $call=ociresult($st5,6);
         $unit=ociresult($st5,7);
         $query6 = "select prod_line_lname from parameter.p_prod_line@dwhnas where prod_line_id='$lineid'";
         $st6 = ociparse($conn,$query6);
         ociexecute($st6);
         ocifetch($st6);
         $nama_prod_line=ociresult($st6,1);
         $query7 = "select REV_item_LNAME from parameter.p_rev_item@dwhnas where REV_item_ID='$itemid'";
         $st7 = ociparse($conn,$query7);
         ociexecute($st7);
         ocifetch($st7);
         $nama_rev_item=ociresult($st7,1);
    $query8 = "select * from cost_of_product where prod_line_lname='$nama_prod_line' and REV_item_LNAME='$nama_rev_item' and end_date is null";
         $st8 = ociparse($conn,$query8);
         ociexecute($st8);
         ocifetch($st8);
         $lineid_cost=ociresult($st8,1);
         $itemid_cost=ociresult($st8,2);
         $satuan=ociresult($st8,5);
         $nilai=ociresult($st8,7);
         if (strtoupper($satuan)=='MENIT') $total1=$total1+(($unit/60)*$nilai);
         if (strtoupper($satuan)=='KBPS') $total2=$total2+($unit*$nilai);
         if (strtoupper($satuan)=='SMS') $total3=$total3+($call*$nilai);
         if (strtoupper($satuan)=='SSL') $total4=$total4+($call*$nilai);
         if (strtoupper($satuan)=='SST') $total5=$total5+($call*$nilai);
    $total_cost_pots=$total1+$total2+$total3+$total4+$total5;
    echo $total_cost_pots;
    ?>
    this script just for exp.

    Please convert step by step. for example
    (1) remove inverted quotation mark ( ` )
    (2) modify constraints syntax (PRIMARY KEY,UNIQUE KEY, KEY etc.) to [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/clauses002.htm#g1053592]Oracle constraints.
    (3) modify some datatype to [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements001.htm#i45441]Oracle datatype
    (4) think how to convert auto_increment ([url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6015.htm#i2067093]Sequence, [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2235611]Beffore Trigger etc. on Oracle)
    http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_packages.htm#sthref864
    http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14261/toc.htm

  • Select multiple items from a list box as values for a parameter of crystal report and Oracle procedure

    -  I have a  Product list box (asp.net) used as multiple selected values for  a parameter. 
    - The Product ID is defined in the Oracle procedure as NUMBER data type. 
    -  In my crystal report, I have a parameter field allow multiple values as p_product_id type as Number.  This is the code in my Record Selection Formula for the report:
    ({?p_product_id}[1] = -1 OR {Procedure_name.product_id} in {p_product_id})
    -  In C#, this is my code
    List<decimal?> productUnit = new List<decimal?>();
    int counter = 0;
    decimal prod;
    for (int i = 0; i < lstProducts.Items.Count; i++)
                  if (lstProducts.Items[i].Selected)
                                if (decimal.TryParse(lstProduct.Items[i].Value, out prod))
                                    productUnit.Add((decimal?)prod);                              
                                    counter++;
           if (counter == 0)
                       productUnit.Add(-1);                      
    ReportingDAO rDataFactory = new ReportingDAO();
    retVal = rDataFactory.GetProductReport(productUnit);
    public CrystalDecisions.CrystalReports.Engine.ReportDocument GetProductReport(List<decimal?> productUnit)
              CrystalDecisions.CrystalReports.Engine.ReportDocument retVal = new rptProductDownload();
              ReportLogon rptLog = new ReportLogon();
             rptLog.Logon(retVal, "RPT_PRODUCT_DOWNLOAD");
             retVal.SetParameterValue("p_product_id", productUnit); 
    I keep having the "Value does not fall within the expected range" when I debug.  My question is, is the data type I used for procedure/Crystal report/ and C# correct ?  I always have problem with the data type.  Any help would be
    appreciated
    Thank you

    Hi progGirl,
    Thank you for your post, but Microsoft doesn't provide support for CrystalReport now. Please post your question in SAP official site here:
    http://forums.sdn.sap.com/forum.jspa?forumID=313
    Thank you for your understanding.
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Problem in XML Parsing via oracle procedure...

    Hi,
    I wrote one oracle procedure for xml parsing.
    I have one valid xml file which has "encode UTF-8". The XML file contains some comments also. While we are parsing the xml file at that time it is not parse successfully and also it is not giving any error. After the following line it is skip rest of the codes(lines).
    dbms_xmlparser.parseclob(l_parser, l_clob);
    At the end of the xml file there are some comments which is like "<!-- abc --> ".
    When I am changing the "encode UTF-8 to ISO-88596-1" & removing the comments which wrote on bottom of the file then its working fine, but the files which we are getting from the system is contains the encode UTF-8 and we don't want to preprocess on that xml files. Even if we will do that via shell script or perl script then it will be overhead to the system and in a single stroke our system will parse more than 5k xml files, so if we will do some preprocess on it, it will take some more time approx 1-2 minutes extra.
    So, If someone knows any solution of this problem, then please guide & help me on this.
    My xml file structure is as follows:-
    <?xml version="1.0" encoding="UTF-8"?>
    <mcd xmlns:HTML="http://www.w3.org/TR/REC-xml">
         <child>
              <child1>32.401 V5.5</child1>
              <child2>ZoneGate</child2>
         </child>
         <mc>
              <newid>
                   <id>12</id>
              </newid>
              <mindex>
                   <date>20111102180000</date>
                   <mt>abc1</mt>
                   <mt>abc2</mt>
                   <mvalue>
                        <r>val_1</r>
                        <r>val_2</r>
                   </mvalue>
              </mindex>
         </mc>
    </mcd>
    <!--
    ALARM STATUS
    morning 10
    afternoon 14
    evening 18
    night 22
    -->
    <!--
    PARAM:EID = 1
    PARAM:GId = 3
    PARAM:GSId = 0
    --!>
    And my oracle procedure is as follows:-
    create or replace procedure loadXMLtotable(dir_name IN varchar2, xmlfile IN varchar2) AS
    -- Defining the variables
    ecode               NUMBER;
    emesg           VARCHAR2(200);
    l_bfile      BFILE;
    l_clob      CLOB;
    l_dest_offset      INTEGER:=1;
    l_src_offset      INTEGER:=1;
    l_Char_set_id      NUMBER := NLS_CHARSET_ID('UTF8');
    l_lang_context      INTEGER := dbms_lob.default_lang_ctx;
    l_warning           INTEGER;
    l_parser dbms_xmlparser.Parser;
    l_doc dbms_xmldom.DOMDocument;
    l_nl1 dbms_xmldom.DOMNodeList;
    l_nl2 dbms_xmldom.DOMNodeList;
    l_n dbms_xmldom.DOMNode;
    node1 dbms_xmldom.DOMNode;
    colid integer ; -- column id used for identifying which column it belongs.
    l_xmltype XMLTYPE;
    sub_xmltype XMLTYPE;
    num_nodes number;
    l_index PLS_INTEGER;
    l_subIndex           PLS_INTEGER;
    starttime Date;
         temp_datatime VARCHAR(25);
    columnname varchar2(300);
    columnvalue varchar2(300);
    -- creating a Type which is a type of "test_hem" table RowType, which I created in SVN server
    TYPE tab_type IS TABLE OF test_hem%ROWTYPE;
    t_tab tab_type := tab_type();
    BEGIN
    -- Passing the xmlfile and virtual directory name which we gave at the time of directory creation
    l_bfile := BFileName('MY_FILES', xmlfile);
    dbms_lob.createtemporary(l_clob, cache=>FALSE);
    dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
    --dbms_lob.loadFromFile(dest_lob => l_clob,
    -- src_lob => l_bfile,
    -- amount => dbms_lob.getLength(l_bfile));
    dbms_lob.loadclobfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile),
    l_dest_offset, l_src_offset, l_Char_set_id, l_lang_context, l_warning);
    dbms_lob.close(l_bfile);
    -- make sure implicit date conversions are performed correctly
    dbms_session.set_nls('NLS_DATE_FORMAT','''YYYY-MON-DD HH24:MI:SS''');
    dbms_output.put_line('Date format set');
    -- Create a parser.
    l_parser := dbms_xmlparser.newParser;
    dbms_output.put_line('output 1');
    -- Parse the document and create a new DOM document.
    dbms_xmlparser.parseclob(l_parser, l_clob);
    dbms_output.put_line(' passed parsing');
    l_doc := dbms_xmlparser.getDocument(l_parser);
    dbms_output.put_line(' passed getdocument');
    -- Free resources associated with the CLOB and Parser now they are no longer needed.
    dbms_lob.freetemporary(l_clob);
    dbms_xmlparser.freeParser(l_parser);
    -- Get a list of all the EMP nodes in the document using the XPATH syntax.
    l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/child');
    -- Loop through the list and create a new record in a tble collection
    FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
    l_n := dbms_xmldom.item(l_nl1, cur_sel);
    t_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    dbms_xslprocessor.valueOf(l_n,'child1/text()',t_tab(t_tab.last).country);
    -- putting the state and vendorname into the table rowtype
    dbms_xslprocessor.valueOf(l_n,'child2/text()',t_tab(t_tab.last).state);
    END LOOP;
    -- getting the version and putting into the table rowtype
    l_n := dbms_xslprocessor.selectSingleNode(dbms_xmldom.makeNode(l_doc),'//mcd/mc/newid/id');
    dbms_xslprocessor.valueOf(l_n,'id/text()',t_tab(t_tab.last).id);
    -- selecting the nodes whose starting tag is "mindex"
    l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/mc/mindex');
    -- checking the total number of nodes whose starting through "mi"
    num_nodes := dbms_xmldom.getLength(l_nl1);
    l_index := 1;
    -- For loop to iterate the nodes.
    FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
    -- whole current node is selected and storing into the node1 variable
    node1 := dbms_xmldom.item(l_nl1, cur_sel);
    -- setting the xmltype as AL32UTF8
    l_xmltype := xmltype(l_bfile, nls_charset_id('AL32UTF8'));
    -- if selecting parent node containing the mt child node then only proceed else skip that parent node.
    IF (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r') > 0) Then
    -- fetch the datatime, convert it into to_date format and store it into table rowtype
    temp_datatime := dbms_xslprocessor.valueOf(node1, 'date/text()');
    t_tab(t_tab.last).data_time := to_char(to_date(temp_datatime, 'YYYYMmcDHH24MISS'));
    l_subIndex := 1;
                                  while (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt[' || l_subIndex || ']') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r['|| l_subIndex || ']') > 0 ) LOOP
                                  -- getting mt and corresponging mvalue/r values
    dbms_xslprocessor.valueOf(node1,'mt[' || l_subIndex || ']/text()',columnname);
    dbms_xslprocessor.valueOf(node1,'mvalue/r[' || l_subIndex || ']/text()',columnvalue);
    l_subIndex := l_subIndex + 1;
    -- getting the column to which this mapping belongs.
    select columnid into colid from abc_table where columnname=name;
    CASE colid
    WHEN 1 THEN t_tab(t_tab.last).col1 := columnvalue;
                             WHEN 2 THEN t_tab(t_tab.last).col2 := columnvalue;
                             WHEN 3 THEN t_tab(t_tab.last).col3 := columnvalue;
    ELSE dbms_output.put_line('No column mapping for counter ' || columnname) ;
    END CASE; -- end of case statement.
    END LOOP;
    -- Insert data into the real table from the table collection.
    FORALL i IN t_tab.first .. t_tab.last
    INSERT INTO test_hem VALUES t_tab(i);
    END IF;
    l_index := l_index + 1;
    COMMIT;
    END LOOP;
    commit;
    EXCEPTION
    WHEN OTHERS THEN
    ecode := SQLCODE;
    emesg := SQLERRM;
    dbms_output.put_line(TO_CHAR(ecode) || '-' || emesg);
         dbms_lob.freetemporary(l_clob);
         dbms_xmlparser.freeParser(l_parser);
         dbms_xmldom.freeDocument(l_doc);
    END;

    Sorry Odie,
    I am new to this site as well as PL/SQL. I am giving additional details which you had mentioned in your last comments.
    our Oracle Database version is "10.2.0.4.0"
    The structure of target table Instrument_Details is as follows:
    Create table Instrument_Details (
    instrument_id          Integer  Primary Key,
    provider_name          Varchar2(32),
    version_number          Varchar2(32),
    location_id                  Integer,
    installation_date             Date,
    granularity                  Integer,
    time_out                  Integer );
    Note:- Here test_hem is alias of Instrument_details.
    Here instrument_id is a primary key.
    provider_name contains the child2 xml tag value.
    version_number contains the child1 xml tag value.
    location_id contains the newid/id value which is map to other table which fetching the location name corresponding to the location_id.
    installation_date contains the date xml tag value.
    Now we have created one mapping tables where we mapped the xml tag values "mt" with table column name means "abc1 = granularity", "abc2 = time_out" in that table.
    these table column value are written under mvalue xml tag.
    _Our Database Character set is_:-
    NLS_CHARACTERSET WE8ISO8859P1
    Now as you suggest me to format your code. I am writing the xml code and procedure code again.
    My xml file structure is as follows:-
    <?xml version="1.0" encoding="UTF-8"?>
    <mcd xmlns:HTML="http://www.w3.org/TR/REC-xml">
      <child>
          <child1>32.401 V5.5</child1>
          <child2>ZoneGate</child2>
      </child>
      <mc>
          <newid>
               <id>12</id>
          </newid>
      <mindex>
           <date>20111102180000</date>
           <mt>abc1</mt>
           <mt>abc2</mt>
           <mvalue>
                 <r>val_1</r>   -- here val_1 and val_2 are numeric values
                 <r>val_2</r>
            </mvalue>
      </mindex>
      </mc>
    </mcd>
    <!--
    ALARM STATUS
    morning 10
    afternoon 14
    evening 18
    night 22
    -->
    <!--
    PARAM:EID = 1
    PARAM:GId = 3
    PARAM:GSId = 0
    --!> And my oracle procedure is as follows:-
    create or replace procedure loadXMLtotable(dir_name IN varchar2, xmlfile IN varchar2) AS
    -- Defining the variables
    ecode NUMBER;
    emesg VARCHAR2(200);
    l_bfile BFILE;
    l_clob CLOB;
    l_dest_offset INTEGER:=1;
    l_src_offset INTEGER:=1;
    l_Char_set_id NUMBER := NLS_CHARSET_ID('UTF8');
    l_lang_context INTEGER := dbms_lob.default_lang_ctx;
    l_warning INTEGER;
    l_parser dbms_xmlparser.Parser;
    l_doc dbms_xmldom.DOMDocument;
    l_nl1 dbms_xmldom.DOMNodeList;
    l_nl2 dbms_xmldom.DOMNodeList;
    l_n dbms_xmldom.DOMNode;
    node1 dbms_xmldom.DOMNode;
    colid integer ; -- column id used for identifying which column it belongs.
    l_xmltype XMLTYPE;
    sub_xmltype XMLTYPE;
    num_nodes number;
    l_index PLS_INTEGER;
    l_subIndex PLS_INTEGER;
    starttime Date;
    temp_datatime VARCHAR(25);
    columnname varchar2(300);
    columnvalue varchar2(300);
    -- creating a Type which is a type of "Instrument_Details" table RowType, which I created in SVN server
    TYPE tab_type IS TABLE OF Instrument_Details%ROWTYPE;
    t_tab tab_type := tab_type();
    BEGIN
    -- Passing the xmlfile and virtual directory name which we gave at the time of directory creation
    l_bfile := BFileName('MY_FILES', xmlfile);
    dbms_lob.createtemporary(l_clob, cache=>FALSE);
    dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
    --dbms_lob.loadFromFile(dest_lob => l_clob,
    -- src_lob => l_bfile,
    -- amount => dbms_lob.getLength(l_bfile));
    dbms_lob.loadclobfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile),
    l_dest_offset, l_src_offset, l_Char_set_id, l_lang_context, l_warning);
    dbms_lob.close(l_bfile);
    -- make sure implicit date conversions are performed correctly
    dbms_session.set_nls('NLS_DATE_FORMAT','''YYYY-MON-DD HH24:MI:SS''');
    dbms_output.put_line('Date format set');
    -- Create a parser.
    l_parser := dbms_xmlparser.newParser;
    dbms_output.put_line('output 1');
    -- Parse the document and create a new DOM document.
    dbms_xmlparser.parseclob(l_parser, l_clob);
    *-- Below lines are skipping....*
    dbms_output.put_line(' passed parsing');
    l_doc := dbms_xmlparser.getDocument(l_parser);
    dbms_output.put_line(' passed getdocument');
    -- Free resources associated with the CLOB and Parser now they are no longer needed.
    dbms_lob.freetemporary(l_clob);
    dbms_xmlparser.freeParser(l_parser);
    -- Get a list of all the EMP nodes in the document using the XPATH syntax.
    l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/child');
    -- Loop through the list and create a new record in a tble collection
    FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
    l_n := dbms_xmldom.item(l_nl1, cur_sel);
    t_tab.extend;
    -- Use XPATH syntax to assign values to he elements of the collection.
    dbms_xslprocessor.valueOf(l_n,'child1/text()',t_tab(t_tab.last).country);
    -- putting the state and vendorname into the table rowtype
       dbms_xslprocessor.valueOf(l_n,'child2/text()',t_tab(t_tab.last).state);
    END LOOP;
    -- getting the version and putting into the table rowtype
       l_n := dbms_xslprocessor.selectSingleNode(dbms_xmldom.makeNode(l_doc),'//mcd/mc/newid/id');
      dbms_xslprocessor.valueOf(l_n,'id/text()',t_tab(t_tab.last).id);
    -- selecting the nodes whose starting tag is "mindex"
      l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/mc/mindex');
    -- checking the total number of nodes whose starting through "mi"
      num_nodes := dbms_xmldom.getLength(l_nl1);
    l_index := 1;
      -- For loop to iterate the nodes.
      FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
      -- whole current node is selected and storing into the node1 variable
      node1 := dbms_xmldom.item(l_nl1, cur_sel);
      -- setting the xmltype as AL32UTF8
       l_xmltype := xmltype(l_bfile, nls_charset_id('AL32UTF8'));
      -- if selecting parent node containing the mt child node then only proceed else skip that parent node.
        IF (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r') > 0) Then
      -- fetch the datatime, convert it into to_date format and store it into table rowtype
        temp_datatime := dbms_xslprocessor.valueOf(node1, 'date/text()');
        t_tab(t_tab.last).data_time := to_char(to_date(temp_datatime, 'YYYYMmcDHH24MISS'));
        l_subIndex := 1;
       while (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt[' || l_subIndex || ']') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r['|| l_subIndex || ']') > 0 ) LOOP
    -- getting mt and corresponging mvalue/r values
       dbms_xslprocessor.valueOf(node1,'mt[' || l_subIndex || ']/text()',columnname);
      dbms_xslprocessor.valueOf(node1,'mvalue/r[' || l_subIndex || ']/text()',columnvalue);
      l_subIndex := l_subIndex + 1;
      -- getting the column to which this mapping belongs.
      select columnid into colid from abc_table where columnname=name;
      CASE colid
      WHEN 1 THEN t_tab(t_tab.last).col1 := columnvalue;
      WHEN 2 THEN t_tab(t_tab.last).col2 := columnvalue;
      WHEN 3 THEN t_tab(t_tab.last).col3 := columnvalue;
          ELSE dbms_output.put_line('No column mapping for counter ' || columnname) ;
      END CASE; -- end of case statement.
      END LOOP;
    -- Insert data into the real table from the table collection.
      FORALL i IN t_tab.first .. t_tab.last
        INSERT INTO test_hem VALUES t_tab(i);
      END IF;
      l_index := l_index + 1;
    COMMIT;
    END LOOP;
    commit;
    EXCEPTION
      WHEN OTHERS THEN
      ecode := SQLCODE;
      emesg := SQLERRM;
      dbms_output.put_line(TO_CHAR(ecode) || '-' || emesg);
      dbms_lob.freetemporary(l_clob);
      dbms_xmlparser.freeParser(l_parser);
      dbms_xmldom.freeDocument(l_doc);
    END;Thanks in advance for your help...

Maybe you are looking for

  • HT4865 I accidentally set up a different iCloud account on my mac instead of the account my phone uses??

    I have had my iphone 4s for a long time, i recently purchaced a MacBookAir and set up an iCloud account thats diffent from the email i used on my phone i am unable to pair the two, i would like to use my new email i used on the mac and change the old

  • How to specify rasterID of RDT in SDO_GEOR.createBlank

    Hi all, When issuing an SDO_GEOR.createBlank can we specify the rasterid in RDT just like when use SDO_GEOR.init we specify the rasterid in RDT (instead of letting the db decides it)? many thanks in advance =Damon

  • Siebel On Demand Outbound Webservice integration using bpel question

    Hello everyone, I have a question I am hoping the forum can help me out with I am trying to do an integration using bpel with Siebel on demand as the begining point. The bussiness case is that I want qualified leads to be extracted out of the Siebel

  • Expanding path on JTree

    Hi. I add a node to the default tree model and an event gets fired back to the listener (in this case the JTree itself). I then expand the path so as to show the new node to the user. A gap appears between the new node and the node in another branch

  • Indexing A External Drive I no longer Have

    i had a friends mac connected as a ext drive. she took it home. but my spotlight is still indexing the drive which of course not connected anymore. how do i stop this? is there a easy way? or do i have to go into the dreaded "terminal" thanks for you