Converting T-SQL proc into Oracle

I need help in converting the following stored procedure into PL/SQL code. Basically I need to know corresponding function names for the various T-SQL constructs below. The parameter @PROC_NUM is passed by the caller with value @@PROCID which is the T-SQL global variable for the ID of the current stored procedure being executed by SQL Server. Thanks in advance for all the help.
CREATE PROCEDURE [dbo].MARS_MPPM_HANDLE_ERROR
     @PROC_NUM          INT
AS
BEGIN
     -- SET NOCOUNT ON added to prevent extra result sets from
     -- interfering with SELECT statements.
     SET NOCOUNT ON;
     DECLARE @ERROR_NUMBER          INT
     DECLARE @ERROR_SEVERITY          INT
     DECLARE @ERROR_STATE          INT
     DECLARE @ERROR_PROCEDURE     Varchar(1000)
     DECLARE @ERROR_LINE               INT
     DECLARE @ERROR_MESSAGE          Varchar(8000)
     DECLARE @PROC_NAME               Varchar(255)
     SELECT
          @ERROR_NUMBER = ERROR_NUMBER(),
          @ERROR_SEVERITY = ERROR_SEVERITY(),
          @ERROR_STATE = ERROR_STATE(),
          @ERROR_PROCEDURE = ERROR_PROCEDURE(),
          @ERROR_LINE = ERROR_LINE(),
          @ERROR_MESSAGE = ERROR_MESSAGE(),
          @PROC_NAME = OBJECT_NAME( @PROC_NUM )
          IF 50000 = @ERROR_NUMBER
          BEGIN
               RAISERROR( '%s -> %s', 16, 1, @PROC_NAME, @ERROR_MESSAGE )
          END
          ELSE
          BEGIN
               RAISERROR( '%s -> Error Number = %d, Error Severity = %d, Error State = %d, Error Procedure = %s, Error Line = %d, Error Message = %s',
                    16,
                    1,
                    @PROC_NAME,
                    @ERROR_NUMBER,
                    @ERROR_SEVERITY,
                    @ERROR_STATE,
                    @ERROR_PROCEDURE,
                    @ERROR_LINE,
                    @ERROR_MESSAGE )
          END
END

875311 wrote:
I need help in converting the following stored procedure into PL/SQL code.
Re: How can i rewrite this code into java?
This is true of any language, to adapt to this case
1) Learn T-SQL
2) Understand what that code does, that is, what its job is.
3) Learn PL/SQL.
4) Write PL/SQL code that fulfills the requirements fleshed out in step 2.
The absolutely wrong way to do it is to try a mindless, mechanical translation.
Re: How can i rewrite this code into java?
>
Seriously, you need to go through a Java tutorial from the beginning. Just trying to force another language's syntax onto Java without actually understanding anything about Java, and then posting questions here when you get stuck--questions that you could have and should have answered by doing the tutoria--is a horrible approach.
>
Replace Java with PL/SQL for same answer.
Getting started with PL/SQL
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10766/toc.htm
http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/toc.htm
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17126/toc.htm

Similar Messages

  • Need help converting MS SQL query into Oracle, Function 'WHERE' issues

    SELECT PERS_NBR, PAY_ID, PAY_CODE, LOGICAL_DATE, LOGICAL_DATE AS END_DATE, PCNAMES + REPLICATE(',', 39 - (LEN(PCNAMES) - LEN(REPLACE(PCNAMES, ',', ''))))
    AS PC_NAMES_FINAL
    FROM (SELECT DISTINCT A.PAY_ID, A.PAY_CODE, A.PERS_NBR, A.LOGICAL_DATE, PCNAMES = substring
    ((SELECT TOP 10 ',' + PC_NAME + ',' + SUBSTRING(CAST(B.VALUE AS VARCHAR), 0, LEN(CAST(B.VALUE AS VARCHAR)) - 2)
    FROM T_PAY_CAT_RECORD B
    WHERE B.PERS_NBR = A.PERS_NBR AND
    B.LOGICAL_DATE = A.LOGICAL_DATE FOR XML path(''), elements), 2, 500)
    FROM T_PAY_CAT_RECORD A, T_PERSON P
    WHERE A.PERS_NBR = P.NBR) FINAL
    Edited by: 919969 on Mar 9, 2012 3:45 PM

    Hello
    Like any language you need to understand what the messages coming from the syntax check are saying...
    XXXX> SELECT PERS_NBR,
      2          PAY_ID,
      3          PAY_CODE,
      4          LOGICAL_DATE,
      5          LOGICAL_DATE AS END_DATE,
      6          PCNAMES || LPAD(',', 39 - (LENGTH(PCNAMES) - NVL(LENGTH(REPLACE(PCNAMES,',')),0)),',') AS PC_NAMES_FINAL
      7    FROM  (
      8           SELECT  PAY_ID,
      9                   PAY_CODE,
    10                   PERS_NBR,
    11                   LOGICAL_DATE,
    12                   SUBSTR(
    13                          RTRIM(XMLAGG(XMLELEMENT(e,PC_NAME || ',' || SUBSTR(VALUE,1,LEN(VALUE) - 2),',').EXTRACT('//text()')),',') PCNAMES
    14                          2,
    15                          500
    16                         )
    17             FROM  (
    18                    SELECT  A.PAY_ID,
    19                            A.PAY_CODE,
    20                            A.PERS_NBR,
    21                            A.LOGICAL_DATE,
    22                            A.PC_NAME,
    23                            ROW_NUMBER() OVER(PARTITION BY A.PERS_NBR,A.LOGICAL_DATE ORDER BY 1) RN
    24                      FROM  T_PAY_CAT_RECORD A,
    25                            T_PERSON P
    26                      WHERE A.PERS_NBR = P.NBR
    27                   )
    28             WHERE RN <= 10
    29             GROUP BY PAY_ID,
    30                      PAY_CODE,
    31                      PERS_NBR,
    32                      LOGICAL_DATE
    33          ) FINAL
    34  /
                            RTRIM(XMLAGG(XMLELEMENT(e,PC_NAME || ',' || SUBSTR(VALUE,1,LEN(VALUE) - 2),',').EXTRACT('//text()')),',') PCNAMES
    ERROR at line 13:
    ORA-00907: missing right parenthesisIf you use something like SQL*Plus or SQL Developer, they will give you the error stack which will point you to the source of the problem.
    It's saying missing right parenthesis. Start by finding out if we've got all out matching brackets. Counting from the start of that statement i.e. SUBSTR on line 12, we have 7 open brackets and 6 close brackets. So there does appear to be a problem with brackets. However if we take a step back and look at lines 12 to 16, this is actually a single statement. It's a call to the SUBSTR function and within it it has calls to RTRIM, XMLAGG etc. For the statement as a whole there are the same number of left and right parenthesis so the problem is related to something else. Something that is leading the syntax check to think it has reached the end of a statement and hasn't found enough closing parethesis.
    The issue here appears to be that we have the token PCNAMES at the end of line 13 but syntactically that's not correct. We can't have that token there because it's appearing in the middle of a function call. PCTNAMES is actually a column alias but it's just in the wrong place. We need it to be an alias for the whole expression from line 12 to 16. So make the change and see what happens...
    XXXX> select PERS_NBR,
      2          PAY_ID,
      3          PAY_CODE,
      4          LOGICAL_DATE,
      5          LOGICAL_DATE AS END_DATE,
      6          PCNAMES || LPAD(',', 39 - (LENGTH(PCNAMES) - NVL(LENGTH(REPLACE(PCNAMES,',')),0)),',') AS PC_NAMES_FINAL
      7    FROM  (
      8           SELECT  PAY_ID,
      9                   PAY_CODE,
    10                   PERS_NBR,
    11                   LOGICAL_DATE,
    12                   SUBSTR(
    13                          RTRIM(XMLAGG(XMLELEMENT(e,PC_NAME || ',' || SUBSTR(VALUE,1,LEN(VALUE) - 2),',').EXTRACT('//text()')),',')
    14                          2,
    15                          500
    16                         ) PCNAMES
    17             FROM  (
    18                    SELECT  A.PAY_ID,
    19                            A.PAY_CODE,
    20                            A.PERS_NBR,
    21                            A.LOGICAL_DATE,
    22                            A.PC_NAME,
    23                            ROW_NUMBER() OVER(PARTITION BY A.PERS_NBR,A.LOGICAL_DATE ORDER BY 1) RN
    24                      FROM  T_PAY_CAT_RECORD A,
    25                            T_PERSON P
    26                      WHERE A.PERS_NBR = P.NBR
    27                   )
    28             WHERE RN <= 10
    29             GROUP BY PAY_ID,
    30                      PAY_CODE,
    31                      PERS_NBR,
    32                      LOGICAL_DATE
    33          ) FINAL
    34  /
                            2,
    ERROR at line 14:
    ORA-00907: missing right parenthesisNOw we've got a new error. Again it's saying we've got a missing parenthesis but this time on line 14. The issue here is that line 13 is a parameter to the SUBSTR function but there is no comma on the end. What we actually have at the moment is a line that looks like so
    RTRIM(XMLAGG(XMLELEMENT(e,PC_NAME || ',' || SUBSTR(VALUE,1,LEN(VALUE) - 2),',').EXTRACT('//text()')),',') 2,Which is just not formed correctly. We need a comma at the end of line 13 to state that this is the end of that line as a parameter.
    XXXX> select PERS_NBR,
      2          PAY_ID,
      3          PAY_CODE,
      4          LOGICAL_DATE,
      5          LOGICAL_DATE AS END_DATE,
      6          PCNAMES || LPAD(',', 39 - (LENGTH(PCNAMES) - NVL(LENGTH(REPLACE(PCNAMES,',')),0)),',') AS PC_NAMES_FINAL
      7    FROM  (
      8           SELECT  PAY_ID,
      9                   PAY_CODE,
    10                   PERS_NBR,
    11                   LOGICAL_DATE,
    12                   SUBSTR(
    13                          RTRIM(XMLAGG(XMLELEMENT(e,PC_NAME || ',' || SUBSTR(VALUE,1,LEN(VALUE) - 2),',').EXTRACT('//text()')),','),
    14                          2,
    15                          500
    16                         ) PCNAMES
    17             FROM  (
    18                    SELECT  A.PAY_ID,
    19                            A.PAY_CODE,
    20                            A.PERS_NBR,
    21                            A.LOGICAL_DATE,
    22                            A.PC_NAME,
    23                            ROW_NUMBER() OVER(PARTITION BY A.PERS_NBR,A.LOGICAL_DATE ORDER BY 1) RN
    24                      FROM  T_PAY_CAT_RECORD A,
    25                            T_PERSON P
    26                      WHERE A.PERS_NBR = P.NBR
    27                   )
    28             WHERE RN <= 10
    29             GROUP BY PAY_ID,
    30                      PAY_CODE,
    31                      PERS_NBR,
    32                      LOGICAL_DATE
    33          ) FINAL
    34  /
                              T_PERSON P
    ERROR at line 25:
    ORA-00942: table or view does not existNow we have a new error but this time it's because I don't have the t_person table on my database. Syntactically the statement above is now correct so it should work on your system.
    HTH
    David
    Edited by: Bravid on Mar 12, 2012 10:20 AM

  • Can i import .sql file into oracle apex?

    i'm new to oracle apex....
    Can i import .sql file into oracle apex?
    i've to import a table into apex...
    what script i have to write into the .sql file....
    pls help...
    Edited by: 794244 on Jan 31, 2011 9:31 PM

    Hi Mahesh
    Navigate to the APEX documentation page - all the documents are listed there ;) (including direct links to the step-by-step "how-to's" - great stuff)
    http://www.oracle.com/technetwork/developer-tools/apex/documentation/index.html
    Enjoy the wonderful world of APEX!
    Mike

  • Pausing and resuming a PL/SQL proc from oracle PL/SQL DEVELOPER tool

    I need to test a PL/SQL on how it reacts to an exception. I need to PAUSE it, do something outside of the proc and then resume the proc. Is there a PROMPT command in PL/SQL where it would wait for user input? Can I use DBMS_OUTPUT.GET_LINE to do this? Where does the GET_LINE raed its input from?

    Perhaps the following demo will help. It uses straight SQL, since the PRIMARY KEY stuff does not require any sort of PL/SQL.
    I set up 2 sessions in SQLPlus.
    Session 1 - create a table with a primary key, insert and do not commit:
    session 1:
    C:\Users\Hans>sqlplus test/test
    SQL*Plus: Release 10.2.0.1.0 - Production on Sat Oct 10 15:40:13 2009
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    SQL> create table abc ( a number primary key enable);
    Table created.
    SQL> insert into abc values (1);
    1 row created.Go to session 2 and insert:
    C:\Users\Hans>sqlplus test/test
    SQL*Plus: Release 10.2.0.1.0 - Production on Sat Oct 10 15:36:45 2009
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    SQL> insert into abc values (1);it hangs here.
    Switch back to session 1 and commit;
    SQL> commit;
    Commit complete.
    SQL>and in session 2 I see
    insert into abc values (1)
    ERROR at line 1:
    ORA-00001: unique constraint (TEST.SYS_C006468) violated
    SQL>Trying this for different test cases: session 1 insert value (2) and session s, insert value (3)
    Session 1
    SQL> insert into abc values (2);
    1 row created.
    SQL>Session 2
    SQL> insert into abc values (3);
    1 row created.
    SQL>Back to session 1
    SQL> commit;
    Commit complete.
    SQL>Back to session 2
    SQL> insert into abc values (3);
    1 row created.
    SQL>So I conclude that dups will block during insert.
    For your original question - SQL and PL/SQL are run in separate engines. PL/SQL sends the SQL command to the SQL engine, which runs that and returns any return info (rowset, error, ...).
    So any questions about SQL and SQL transaction control may be handled in a purely SQLPlus (or TOAD or SQLDeveloper) test case.
    OTOH, questions about PL/SQL can be answered using a debug environment such as SQLDeveloper - see http://www.oracle.com/technology/obe/sqldev/plsql_debug/plsql_debug.htm

  • Convert MS SQL 2000 to Oracle 9i

    Hi,
    I am a newbie in Oracle, I need to convert my current MS SQL 2000 db to Oracle 9i. My current db has about 200 tables with no stored procedures. So I need to convert the db design and data.
    I read from this forum, some suggested to use Oracle Migration Workbench, some suggested Enterprise Manager Console with the Load Wizard.
    How can I do the migration and where can I download the migration tools if any?
    Regards,
    Jenty

    DTS is also buggy which is why SQL Server 2005 has a complete rewrite of the feature.
    Nevertheless for straight data dumps Jim is correct in that DTS should work.
    For getting the DDL you might consider using Query Analyzer to just dump all the DDL into a file and then using C or a script language to extract and convert the SQL into Oracle DDL. If you are a good script (maybe Perl) coder this would be just as quick as setting up and using the conversion tool.
    Once you have the tables defined to Oracle you can use a little pl/sql to generate the sqlldr control cards to pull in the DTS extracted data.
    Or you can use the ability of SQL Server to access Oracle by define a remote db and insert all the data accross. You will need to install an Oracle client on the SQL Server box to do this.
    You have plently of options. Look them all over and go with the one that best matches your available skill set.
    HTH -- Mark D Powell --

  • Importing and executing a .sql file into  Oracle 10g

    Hi
    I am looking to import and execute a .sql file(create scripts created of a databse designed in MS SQL Server 2005). The file was imported into Oracle APEX 3.10 but we are unable to execute the script. Please suggest alternatives as to how we can import these files.
    Thanks in advance.

    You likely need to migrate the database (objects and data). This is not so easy and you should have a look to migration tools: http://www.oracle.com/technology/oramag/oracle/07-sep/o57sql.html.

  • Using Oracle Forms Importing Data From SQL Server into Oracle Tables.

    Dear All,
    We are using Oracle Forms 10g in windows XP and having OAS 10g and Oracle database 9i.
    How can we import data from SQL Server 2005 into Oracle tables using Oracle Forms?
    Thanks & Regards
    Eidy

    I have no idea what "Oracle Hetrogenius Services" is, so I can't help you with that, sorry.
    SQL Developer might also assist you. SQL Developer can connect to SQL Server as well as Oracle and has some tools for migration. See the documentation for details:
    http://download.oracle.com/docs/cd/E12151_01/doc.150/e12156/toc.htm
    For additional help on using SQL Developer for this task, please consult Support or the SQL Developer forum: SQL Developer
    Hope this helps,
    Jacob

  • Convert java.sql.Date to oracle.jbo.domain.Date in oaf

    Hi,
    Need to dafault NeedBydate(i get in from query as below) to a messagelovinput and make it read only.
    i am facing some issue in converting from java.sql.Date to oracle.jbo.domain.Date.
    unable to figure out the problem.
    below is the sample code im trying to use.
    PreparedStatement ps=pageContext.createPreparedStatement("select sysdate from dual");
    ResultSet rs=ps.executeQuery();
    if (rs!=null && ps.next()
    java.sql.Date sqlDate= rs.getDate(1);
    oracle.jbo.domain.Date oracleDate = new oracle.jbo.domain.Date(sqlDate.getTime());
    vorow.setAttribute("Datevalue",oracleDate);
    this is my assumption : to set to UI i need date in format dd-Mon-yyyy.(am i correct? as to get that format i tried to use simple date format class but no use)
    when i tried to use simple date format :unpaseable date exception was raised.
    please guide.

    Hi,
    Why are you using this code???
    PreparedStatement ps=pageContext.createPreparedStatement("select sysdate from dual");
    ResultSet rs=ps.executeQuery();
    if (rs!=null && ps.next()
    java.sql.Date sqlDate= rs.getDate(1);
    oracle.jbo.domain.Date oracleDate = new oracle.jbo.domain.Date(sqlDate.getTime());
    you can get sysdate using this and then set it
    oracle.jbo.domain.Date currentDate = am.getOADBTransaction().getCurrentUserDate();
    java.text.SimpleDateFormat displayDateFormat = new java.text.SimpleDateFormat ("yyyy-MM-dd");
    String DateForm = displayDateFormat.format(currentDate.dateValue());
    oracle.jbo.domain.Date dateset = new oracle.jbo.domain.Date(DateForm);
    and then set the attribute
    vorow.setAttribute("Datevalue",dateset);
    Thanks,
    Gaurav

  • Reading milliseconds from Sql server into oracle 10g

    Hi,
    We have a very time sensitive pressing requirements to be addressed immediately.
    We need to read the date time column from sql server 2008 into oracle 10g.
    We have a dblink established between the two servers and have tried to use sql server and sql native client 10 driver to read the dates from sql into oracle.This we are able to do very successfully.
    The issue is in reading milliseconds stored in sql server.The millisecond part comes in as 00000 from sqlserver to oracle.These milliseconds are needed to identlfy the unique records.
    For instance
    SQL SERVER Oracle
    source_id source id
    01/01/2012 6:30:35:456 01/01/2012 6:30:35:000000.
    Im issuing my query through Toad via Oracle to remote sql server using a dblink which connects using HS ODBC connection to sql server 2008(remote).
    We have no control over sql server Db as this is remote third party DB.We just have select access to their tables to bring into our own oracle DB.
    Any insight or help will be much appreciated.

    Hi,
    Could you please send the following information -
    - what version of HSODBC are you using ? Is it a 10.2 version ?
    - what is the SQL*Server datatype of the column you are reading ?
    - from Oracle could you issue -
    describe sql_server_table@hsodbc
    - what is the Oracle datatype shown for the column ?
    Could you also run your tests using SQLPLUS instead of TOAD ? We don't support TOAD and need to know if the problem also happens when using SQLPLUS, to avoid it being a TOAD problem.
    Also, 10.2 HSODBC is now desupported and you should be using the 11g Database Gateway for ODBC (DG4ODBC) which is a direct replacement for HSODBC. To use DG4ODBC your RDBMS needs to be at 10.2.0.4 or higher and DG4ODBC should be installed in a completely separate ORACLE_HOME from the existing 10.2 install.
    Regards,
    Mike

  • Converting Single Instance database into Oracle Fail-Safe on Linux

    Hi All,
    We have single instance Oracle10g database running on Linux RHEL4. We are looking to convert this database into Oracle Fail-Safe (Active-Passive). Does any one have document for Oracle fail-safe setup?
    Regards,
    Tushar

    Tushar,
    you can't use software for windows on Linux.
    However, there's number of ways to implement high-availability solution on Linux Oracle.
    You can go with Active-Active (RAC) - which means that you'll have two servers attached to the same database at the same time. You can use either, and if one goes down(due to power failure for instance), the second will still be available.
    You can go with Active-Passive (Data Guard) - which means that you'll have one of the nodes being active and the second passive, but synchronized with the first one, so in case of failure of the first node you can activate the second one.
    You can also go with linux clustering - which is most similar to MCS + fail-safe - you'll have two nodes clustered with linux clustering software (RH cluseter suite for instance) and connected to shared storage. One node is active, and in case of crash database instance will be automatically started on the second node. This is beneficial because you can use your resources more efficiently. In case if you have two databases you can run each of them on dedicated server and then, in case of node failure move to another one. However, the setup of such configuration is quite cumbersome.

  • Importing Database from SQL Server into Oracle 8i

    Hello Friends,
    Cuurentlly we are using SQL Server as our application database, Now we want to switch on at Oracle 8i,bcz of some problems,
    If anybody had done so,then please help me in solving this problem,
    I wana Import whole database from SQL server to Oracle
    Lot of thanks

    Hi,
    Use the SQL Server Enterprise Manager to export all the tables from SQL to oralce.
    When selecting the target database use the Oracle native driver (the name is not on top of my head) and not the ODBC one.
    You will have problems with datatypes. Make sure to edit the mappings for the proper datatype if required.
    If you have ntext columns, make sure they are translated to CLOB and not long.
    Regards,
    Wasim.

  • How to convert pl/sql code into java/j2ee

    Hi,
    We have a PL/SQL Oracle App server application that we will support if we can convert in j2ee/java. But when i did take a look at the code, these pl/sql contains all HTML and java code inside the stored procedures.
    And iam looking to explore some tools and mechanisms that can convert these pl/sql in a JAVA application so that i can deploy this new app into my BEA81 environment.
    Does any body has any idea:
    a) How to convert from pl/sql > java ?
    b) Any plugins or tools of BEA that can run these pl/sql (the way thay are currently...i.e w/o converting) in BEA 81 container ?
    thanks, sangita

    these pl/sql contains all HTML and java code insideJava or JavaScript. They are not the same. I wouldn't expect to see Java inside html, whereas JavaScript would be intermixed. On the other hand you might have a java stored proc (Oracle 9/10) which is generating HTML.
    >
    Does any body has any idea:Refactor.
    I doubt it just has html and JavaScript/Java. So what you have is a mess that mixes several things that should have been seperate in the first place.

  • How can i load a big xml data using sql loader into oracle

    hi,
    I have a large xml about 5M at c:\temp and interested to load it in an oracle table with the following structure:
    emp
    empno  number(10),
    ename varchar2(250),
    sal number(15)i am new with xml database
    Best Regards,

    hi,
    when i am trying to follow the steps then getting following error:
    any help will be greatly appreciated:
           SELECT * FROM v$version;
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    PL/SQL Release 10.2.0.1.0 - Production
    "CORE     10.2.0.1.0     Production"
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    DROP directory xmlstore;
    Directory dropped.
    my xml file:
    < ?xml version="1.0" encoding="UTF-8"?>
    <root>
      <id>0</id>
      <info>
        <info_id>0</info_id>
        <info_content>Text</info_content>
      </info>
    </root>
    CREATE directory xmlstore11 AS 'c:\temp';
    Directory created.
    CREATE TABLE test
        (xmldata xmltype);
    TABLE created.
    INSERT INTO test
        VALUES
        (XMLTYPE(bfilename('XMLSTORE11','info.xml'),NLS_CHARSET_ID('AL32UTF8')));
    received error is as follow:
        Error starting at line 24 in command:
    INSERT INTO test
        VALUES
        (XMLTYPE(bfilename('XMLSTORE11','info.xml'),NLS_CHARSET_ID('AL32UTF8')))
    Error report:
    SQL Error: ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00231: invalid character 32 (' ') found in a Name or Nmtoken
    Error at line 1
    ORA-06512: at "SYS.XMLTYPE", line 295
    ORA-06512: at line 1
    31011. 00000 -  "XML parsing failed"
    *Cause:    XML parser returned an error while trying to parse the document.
    *Action:   Check if the document to be parsed is valid.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • How to convert pl/sql block into single update statement

    Dear all gurus,
    I have pl/sql block mention below, Can I convert this pl/sql block to single update statement if possible?
    If not how to optimize this block?
    Pleaese suggest.
    thanks in advance.
    Vijay
    DECLARE
    CURSOR vt_mlr_cursor IS Select master_key, user4 from vt_mlr Where USER4 is not null;
    USERFIELD VARCHAR2(100);
    C1 VARCHAR2(3); /* this will return location of first space = 12 */
    C2 VARCHAR2(3); /* this will return location of second space = 20 */
    C3 VARCHAR2(3); /* this will return location of third space = 28 */
    C4 VARCHAR2(3); /* this will return location of forth space = 35 */
    Field1 VARCHAR2(40); /* this will return FTMYFLXA04W */
    Field2 VARCHAR2(10); /* this will return VPI0043 */
    Field3 VARCHAR2(10); /* this will return VCI0184 */
    Field4 VARCHAR2(10); /* this will return 005 */
    Field5 VARCHAR2(10); /* this will return 00001 */
    Field_2_n_3 VARCHAR2(25);
    key VARCHAR2(10);
    BEGIN
    FOR vt_mlr_record IN vt_mlr_cursor
    LOOP
    key := vt_mlr_record.master_key;
    USERFIELD := vt_mlr_record.user4;
    C1 := INSTR(vt_mlr_record.user4,' ',1,1); /* this will return location of first space = 12 */
    C2 := INSTR(vt_mlr_record.user4,' ',1,2); /* this will return location of second space = 20 */
    C3 := INSTR(vt_mlr_record.user4,' ',1,3); /* this will return location of third space = 28 */
    C4 := INSTR(vt_mlr_record.user4,' ',1,4); /* this will return location of forth space = 35 */
    Field1 := SUBSTR(vt_mlr_record.user4,1,C1-1); /* this will return FTMYFLXA04W */
    Field2 := SUBSTR(vt_mlr_record.user4,C1+4,C2-C1-4); /* this will return VPI0043 */
    Field3 := SUBSTR(vt_mlr_record.user4,C2+4,C3-C2-4); /* this will return VCI0184 */
    Field4 := SUBSTR(vt_mlr_record.user4,C3+4,C4-C3-4); /* this will return 005 */
    Field5 := SUBSTR(vt_mlr_record.user4,C4+4,LENGTH(vt_mlr_record.user4)-C4-3); /* this will return 00001 */
    Field_2_n_3 := Field2 || '/' || Field3;
    /*DBMS_OUTPUT.PUT_LINE ('Current key is: ' || vt_mlr_record.master_key);*/
    UPDATE vt_mlr
    SET
    aggregator_clli = Field1,
    aggregator_vpi_vci = Field_2_n_3,
    aggregator_slot = Field4,
    aggregator_port = Field5
    WHERE
    master_key = vt_mlr_record.master_key;
    END LOOP;
    END;
    /

    Hi Vijay,
    Here's something to start with, you should be able to complete it.
    First, combine your select and update statements:
    update vt_mlr
       set aggregator_clli = field1
          ,aggregator_vpi_vci = field_2_n_3
          ,aggregator_slot = field4
          ,aggregator_port = field5
    where user4 is not null;Then put these two
    C1 := INSTR(vt_mlr_record.user4,' ',1,1); 
    Field1 := SUBSTR(vt_mlr_record.user4,1,C1-1);into
    Field1 := SUBSTR(vt_mlr_record.user4,1,INSTR(vt_mlr_record.user4,' ',1,1) -1);And put it into the update statement, removing reference to record
    (I have also removed default values for position and occurrence in instr function):
    update vt_mlr
       set aggregator_clli = substr(user4, 1, instr(user4,' ') - 1)
          ,aggregator_vpi_vci = field_2_n_3
          ,aggregator_slot = field4
          ,aggregator_port = field5
    where user4 is not null; I think you can do the rest from here ;-)
    Regards
    Peter

  • Periodic Importing of data from SQL Server into Oracle Database

    I would like to know how I can use the SQL Developer tool to import data from a SQL Server database across the internet into an Oracle Database on a periodic basis? I understand there is a Migration Workbench, but it seems to be only a one off activity.
    What I would really like is to be able to import data for example, very 30 minutes from multiple tables/views in a SQL Server Database into an Oracle Database (overwriting or modifying existing same data) without the need for Heterogeneous Connectivity, as my Oracle Database is not my LAN.
    Thank you for your kind ideas and suggestions.

    To be honest the best way to do it is DG4ODBC or DG4MSQL. All other solutions need manual interaction.
    The gateways DG4ODBC and DG4MSQL are independant from the Oracle database and also from the SQL Server location. In a worst case scenario you have an Oracle database on machine A, the gateway on machine B and the SQL Server on machine C.
    Gateways were built to exactly do what you want. As you have access to the Oracle database the only part you need to define within the Oracle database is a db link. If you specify the full tns connect identifier there is even no need to edit the tnsnames.ora file.
    Even if you excluded the gateway in your last sentence the best solution would be the gateway.
    Another option you can use is the SQL Server linked server mechanism. It allows you to link another server using OLEDB driver. In your case you can then link the Oracle db into your SQL Server and then insert/update/delete and select Oracle tables from the SQL Server. Using now a trigger will replicate the data immediately to the Oracle db.

Maybe you are looking for