Copy records: is there a simpler sql statement

For each record in one table "msTab" of a MS Sql Server database, I need basically to insert a new record to another one table "oraTab" in Oracle.
I want to do this via codes to meet other requirements. I use Java with jdbc.
It looks like a sql statement (built using codes) must look like:
"Insert into oraTab(field1, field2, field3) values ('XXX', TO_DATE('13-NOV-92','DD-MON-YY', 322)"
If my codes find the date data in msTab being null I thought I need to build insert statement as:
"Insert into oraTab(field1, field3) values ('XXX', 322)", in order that Oracle will insert the default value for field2 automatically (field 2 of oraTab does not allow null).
The logic is not as complicated if there are only 3 fields. But for a table with over a hundred fields, the codes to achieve this is not quite simple. Do I miss some simpler sql statement to do the job?
Thanks.

I believe Satish's suggestion was to use the DEFAULT keyword in the insert
INSERT INTO table_name( col1, col2, col3 )
  VALUES( 1, DEFAULT, 2 );will insert the default value for col2. If you don't know which columns should take on the default value, though, I'm not sure how practical that would be.
Were it me, I'd probably create a BEFORE INSERT trigger that replaced NULL values with appropriate default values and then just do
INSERT INTO oracleTable( column_list )
  SELECT column_list
    FROM sqlTable@databaseLinkJustin

Similar Messages

  • Can we Run a simple SQL statement from OBIEE Middle Tier node

    Hi
    i am working in OBIEE 11g environment. Database is installed on one node and Middle tier (BI services ) in other node,
    Can i use any utility to run a simple SQL statement from Middle tier ?
    Thanks
    Reddy

    Any utility means?
    We can create an ODBC connection on the BI server and run the sql.
    Mark if helps.

  • Stored Procedures for Simple SQL statements

    Hi Guys,
    We are using Oracle 10g database and Web logic for frontend.
    The Product is previously developed in DotNet and SQL Server and now its going to develop into Java (Web Logic) and Oracle 10g database.
    Since the project is developed in SQL Server, there are lot many procedures written for simple sql queries. Now I would like to gather your suggestions / pointers on using procedures for simple select statements or Inserts from Java.
    I have gathered some list for using PL/SQL procedure for simple select queries like
    Cons
    If we use procedures for select statements there are lot many Ref Cursors opened for Simple select statements (Open cursors at huge rate)
    Simple select statements are much faster than executing them from Procedure
    Pros
    Code changes for modifying select query in PL/SQL much easier than in Java
    Your help in this regard is more valuable. Please post your points / thoughts here.
    Thanks & Regards
    Srinivas
    Edited by: Srinivas_Reddy on Dec 1, 2009 4:52 PM

    Srinivas_Reddy wrote:
    Cons
    If we use procedures for select statements there are lot many Ref Cursors opened for Simple select statements (Open cursors at huge rate)No entirely correct. All SQLs that hit the SQL engine are stored as cursors.
    On the client side, you have an interface that deals with this SQL cursor. It can be a Java class, a Delphi dataset, or a PL/SQL refcursor.
    Yes, cursors are created/opened at a huge rate by the SQL engine. But is is capable of doing that. What you need to do to facilitate that is send it SQLs that uses bind variables. This enables the SQL engine to simply re-use the existing cursor for that SQL.
    Simple select statements are much faster than executing them from ProcedureAlso not really correct. SQL performance is SQL performance. It has nothing to do with how you create the SQL on the client side and what client interface you use. The SQL engine does not care whether you use a PL/SQL ref cursor or a Java class as your client interface. That does not change the SQL engine's performance.
    Yes, this can change the performance on the client side. But that is entirely in the hands of the developer and how the developer selected to use the available client interfaces to interface with the SQL cursor in the SQL engine.
    Pros
    Code changes for modifying select query in PL/SQL much easier than in JavaThis is not a pro merely for ref cursors, but using PL/SQL as the abstraction layer for the data model implemented, and having it provide a "business function" interface to clients, instead of having the clients dealing with the complexities of the data model and SQL.
    I would seriously consider ref cursors in your environment. With PL/SQL servicing as the interface, there is a single place to tune SQL, and a single place to update SQL. It allows one to make data model changes without changing or even recompiling the client. It allows one to add new business logical and processing rules, again without having to touch the client.

  • Help with a really simple SQL statement

    Hi All
    I'm relatively new to SQL and can't get my head round what I believe to be a really simple problem.
    I have a table I want to query called locations. We use locations to mean groups and regions as well as people s ofr example:
    TABLE: LOCATION
    IDENTIFIER----------NAME-----------------PART_OF
    101--------------------USER A---------------123
    123--------------------GROUP A-------------124
    etc
    What I'm trying to write is a statement that will return the 'PART_OF' as the 'NAME' rather than the ID number if the ID = 101.
    I was wondering if a nested select statement would do (select as select etc) but just can't get my head round it!
    Any ideas?
    TIA. Jake.

    Hi Jake,
    It's not clear what you are looking for. If USER A is just Part of GROUP A, a self-join will do:
    SQL> with loc as (select 101 locid, 'USER A' locname, 123 part_of from dual
                 union all
                 select 123 locid, 'GROUP A' locname, 124 part_of from dual
                 union all
                 select 124 locid, 'REGION A' locname, null part_of from dual)
    -- End of test data
    select l1.locid, l1.locname, l2.locname part_of
      from loc l1, loc l2
    where l2.locid(+) = l1.part_of
         LOCID LOCNAME  PART_OF
           101 USER A   GROUP A
           123 GROUP A  REGION A
           124 REGION A        
    3 rows selected.But if you want USER A to be part of REGION A, then you need a hierarchia lquery:
    SQL> with loc as (select 101 locid, 'USER A' locname, 123 part_of from dual
                 union all
                 select 123 locid, 'GROUP A' locname, 124 part_of from dual
                 union all
                 select 124 locid, 'REGION A' locname, null part_of from dual)
    -- End of test data
    select l1.locid, l1.locname, connect_by_root(locname) part_of
      from loc l1
    start with part_of is null
    connect by prior locid = part_of
         LOCID LOCNAME  PART_OF
           124 REGION A REGION A
           123 GROUP A  REGION A
           101 USER A   REGION A
    3 rows selected.Regards
    Peter

  • Help with a simple SQL statement??

    table_a
    a_col1
    a_col2
    a_col3
    table_b
    b_col1
    b_col2
    b_col3
    SELECT * FROM TABLE_A
    WHERE A_COL1 IS NOT NULL AND A_COL1 IN (SELECT A_COL1 FROM TABLE_B);
    I don't know why this statement executes without errors? There is no a_col1 in table_b in the sub select.
    In my real situation this query works and is actually pulling a_col1 in the sub select from the table in the main query.
    If you pull the sub select out and try to run it by itself it will error.
    If someone could explain what I'm missing in understanding this it would be appreciated.
    Thanks,
    Whitney

    Because you aren't aliasing your tables, and Oracle is trying it's darndest to turn your query into something that can compile. You aren't explicitly telling it what you want, so it's left to guessing (it would guess TABLE_B first if the column existed, in absence of that, it's going to TABLE_A for the column).
    A reason you should always alias your tables when your query references more than one, you remove the guess work.
    SELECT *
    FROM TABLE_A a
    WHERE a.A_COL1 IS NOT NULL AND a.A_COL1 IN (SELECT b.A_COL1 FROM TABLE_B b);

  • Simple SQl statement help needed!!!

    New to SQL..Please can you advice where is the problem..
    select file_id, a.file_name, a.sum(bytes/1024/1024) Used_space, b.sum(bytes/1024
    /1024) Free_space from dba_data_files a, dba_free_space b where tablespace_name
    ='DATA_TS' OR tablespace_name='INDEX_TS' OR tablespace_name='LOB_TS' group by fi
    le_id
    ERROR at line 1:
    ORA-00918: column ambiguously defined
    Thanks!

    Hi,
    Should you chose to format your SQL the problem is easily seen:
    SQL>select file_id
      2          ,a.file_name
      3          ,a.sum(bytes / 1024 / 1024) used_space
      4          ,b.sum(bytes / 1024 / 1024) free_space
      5      from dba_data_files a, dba_free_space b
      6     where tablespace_name = 'DATA_TS'
      7        or tablespace_name = 'INDEX_TS'
      8        or tablespace_name = 'LOB_TS'
      9  group by file_id;
    group by file_id
    ERROR at line 9:
    ORA-00918: column ambiguously defined
    SQL>So, which file_id do you want - a or b?
    Regards
    Peter

  • Help with simple sql statement usiing Rank function..

    Hello I have very important question..this is how i have a dataset...
    This is the Log Table 
    And the actual Table holds the current value.   12345
    Current Table 
    12345    575 232 4567
    Log Table Values
    Objectid InvalidatedTime
    PhoneArea
    Phoneno Rank
    12345   2014-04-23
    570          
    822-4438      0  
    3
    12345   2014-04-28
    NULL
    658-7789      0
    2
    12345   2014-05-09
    578        
    658-8521      0 
    1
    As you can see on 23 they invlalidated the areacode and phone no and changed it to .. 578 658-8521 but on 04-28 they just changed the phone no and not the area code.. 
    I want the result set to be like this
    Date Fromvalue   
    ToValue  
    2014-04-23 
    570-822-4438      
      578 658-7789
    2014-04-28 578 658-7789 
    578 658-8521
    2014-05-09  578 658-8521
    575 
    232 4567
     I have tried this code.. 
    select 
    --'Home Phone',
    --tt.invalidationtime ,
    --Case when 
    -- tt.*,tt_prev.* --,
    'Home Phone' as PropertyName,
    tt.invalidationtime,
    case when tt.rank1 = 1 then tt.phoneareacode+'-'+tt.phoneno
    when tt.rank1 <> 1 then Isnull(tt.phoneareacode,tt_prev.phoneareacode)+'-'+ isnull(tt.phoneno,tt_prev.phoneno)
    end as FromAddress,
    case when tt.rank1 = 1 then Haddress.phoneareacode+'-'+HAddress.phoneno
    when tt.rank1 <> 1 then Isnull(tt_prev.phoneareacode,tt.phoneareacode)+'-'+isnull(tt_prev.phoneno,tt.phoneno)
    end as ToPhone
    from
     #Phone_Final  tt
    left join  #Phone_Final tt_prev on tt_prev.objectid = tt.objectid and tt.rank1-11 = tt_prev.rank1
    inner join (select * from Soarian_Clin_Prd_1.dbo.Haddress   where PP_id = 2346   and Addresstype = 0) Haddress
    Can you please tell me what is wrong here.. 

    should be this I reckon
    ;With CTE
    AS
    SELECT ROW_NUMBER() OVER (PARTITION BY ObjectID ORDER BY InvalidatedTime) AS Seq, *
    FROM
    SELECT ObjectID,InvalidatedTime,PhoneArea,Phoneno,Rank
    FROM LogTable
    UNION ALL
    SELECT ObjectID, GETDATE(),PhoneArea,Phoneno,NULL
    FROM Current
    )t
    SELECT c1.InvalidatedDate AS [Date],
    COALESCE(c1.PhoneArea,c2.PhoneArea,'') + c1.Phoneno AS FromValue,
    COALESCE(c2.PhoneArea,c1.PhoneArea,'') + c2.Phoneno AS ToValue
    FROM CTE c1
    INNER JOIN CTE c2
    ON c2.Objectid = c1.Objectid
    AND c2.Seq = c1.Seq + 1
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Why there having duplicate record occur by simply sql statement

    The table is following
    SQL> desc customers;
    名稱 空值? 類型
    TID NOT NULL NUMBER(38)
    COM_NUM VARCHAR2(4000)
    COM_NAME NOT NULL VARCHAR2(4000)
    COM_ADDRESS VARCHAR2(4000)
    COM_TEL VARCHAR2(4000)
    COM_FAX VARCHAR2(4000)
    COM_CONTACT VARCHAR2(4000)
    COM_MOBILE VARCHAR2(4000)
    COM_COUNTRY VARCHAR2(4000)
    COM_BRANCH NOT NULL NVARCHAR2(1)
    COM_SALE_ID NUMBER
    COM_TRANSPORT_ID NUMBER
    COM_PAYMENT_DAY NOT NULL NUMBER
    COM_HEADER_NAME VARCHAR2(4000)
    COM_DISABLED NOT NULL NVARCHAR2(1)
    COM_BALANCE NOT NULL NUMBER(12,2)
    SQL is select tid,com_name from customers where tid=360;
    SQL> select tid,com_name from customers where tid=360;
    TID     COM_NAME
    360 利富家品
    360 利富家品
    the statement is select one record, but there are two duplicate record occur.
    is anyone free to help me?
    Thanks a lot

    By yours SQL statement,
    select unique tid,com_name from customers where tid=360;
    there will one record only now.
    is being filled ? NO filled any things
    integrity rules ? I am not understand what is integrity rules,
    my sql statement was
    select * from customers where com_disabled = 0 order by com_name
    most of record is appear once, BUT, some of those is appeared twice. Not only the record tid = 30
    is there a way SQL statement like
    select unique * from customers where com_disabled = 0 order by com_name?
    curious ? Chinese words
    Message was edited by:
    Devotee

  • Update record using SQL statement

    I have VB6.0 and Oracle 10G Express Edition in Windows 2000 Server. My procedure in VB 6.0 can't update record in the table using SQL statement, and the Error Message is " Missing SET keyword ".
    The SQL statement in VB6.0 look like this :
    General Declaration
    Dim conn as New ADODB.Connection
    Dim rs as New ADODB.Recordset
    Private Sub Command1_Click()
    dim sql as string
    sql = " UPDATE my_table " & _
    " SET Name = ' " & Text3.Text & " ' " & _
    " AND Unit = ' " & Text2.Text & " ' " & _
    " WHERE ID = ' " & Text1.Text & " ' "
    conn.Execute (sql)
    Private Sub Form Load()
    Set conn = New ADODB.Connection
    conn.Open "Provider=MSDASQL;" & "Data Source=my_table;"& "User ID =marketing;" & "Password=pass123;"
    I'm sorry about my language.
    What's wrong in my SQL statement, I need help ........ asap
    Best Regards,
    /Harso Adjie

    The syntax should be
    UPDATE TABLE XX
    SET FLD_1 = 'xxxx',
    FLD_2 = 'YYYY'
    WHERE ...
    'AND' is improperly placed in the SET.

  • Need SQL statement to generate a sequence number in the output rows

    Hi folks. I need to create an SQL statement that generates a sequence number column in the output rows (records) such that the first returned row has this column set to 1, second returned row has the column set to 2, etc.
    For example, consider the query:
    SELECT income from employees WHERE income != 20000 ORDER BY income;
    If employees.income contains 60,000, 20,000, 35,000, and 19,000 for respective rows, the output would be this:
    19,000
    35,000
    60,000
    I would like the SQL to also return a sequence number that is computed across the returned rows, resulting in two output columns:
    1 19,000
    2 35,000
    3 60,000
    Is there a simple SQL function that generates the sequence number, in order, and only for the returned rows? Or is there another way?
    I'm stumped. Any help is appreciated! Thanks!
    - Jack Cochrane

    Hi,
    Welcome to the forum!
    Use ROWNUM, like (example):
    Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
    Connected as hr
    SQL> select rownum, first_name from (select e.first_name from employees e where e.first_name like 'J%' order by e.first_name);
        ROWNUM FIRST_NAME
             1 Jack
             2 James
             3 James
             4 Janette
             5 Jason
             6 Jean
             7 Jennifer
             8 Jennifer
             9 John
            10 John
            11 John
            12 Jonathon
            13 Jose Manuel
            14 Joshua
            15 Julia
            16 Julia
    16 rows selected
    SQL> But rememeber if you want to be sure of unique numbers in certain field is better to use sequences and use seq_name.nextval each time you need.
    Regards,

  • Call sql statement from JComboBox component

    Hi there,
    I Have created a frame to populate two JComboBoxs, I'm populating the first one from a database using SQL, this datable is showing the category to below every report.
    anybody know how can I select from my first JComboBox a record a call a second SQL statement acutomatic, the idea is populate me second JCombox with data like my first one, remember the first one is a header

    With a JComboBox you have to be careful that you don't run a query when just the cursor is moved up or down the list. If you want the listener to fire just when enter is pressed or the mouse is clicked, then do this:
    //This stops events being fired when the cursor is used on the list
    comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);You should also attach an event listener like this one:
    comboBox.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent evt) {
                            executeSomeQuery(comboBox.getSelectedItem().toString());               }
              });Or something similar to above, have a play around with it and it should work how you want it to.
    Message was edited by:
    JStudent911

  • Populating JTable table from sql statement.

    Trying to teach myself a combanation of things. Since Oracle is my background java to oracle is only a natural. Now this code I'm trying to select some rows and then display those rows in a table. Simple concept as a teaching aid to me. I won't go into what I went through to get this far, just say there have been quite a few fall starts. Now this code works; however it returns ten rows (one for each tablespace) and displays row 1 ten times. Not quite what I had in mind.
    I have got a simple select statment in my code:
    select tablespace_name,initial_extent,next_extent,pct_increase, status
    from dba_tablespaces order by tablespace_name
    package TableTest;
    // java imports
    import java.util.Vector;
    import java.awt.event.*;
    import java.awt.Toolkit;
    import java.awt.*;
    import javax.swing.*;
    // sql imports
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    public class TableTest extends JFrame
      Connection conn;  // database connection object
      Statement stmt;   // statement object
      ResultSet rslt;   // result set object
      //private vars
      private String userName         = "bubbalouie";
      private String password         = "helpmeimsinking";
      private String sid              = "rob";
      private String port             = "1521";
      private String server           = "w2sd001";
      private String connectString    = "jdbc:oracle:thin:@"+server+":"+port+":"+sid;
      private int numCols             = 5;
      private String sqlStmt          = null;
      private String status           = null;
      public TableTest()
        // Get content pane
        Container contentPane = getContentPane();
        // set layout manager
        contentPane.setLayout(new BorderLayout());
        // create some places to put dat
        Vector data    = new Vector();
        Vector columns = new Vector();
        Vector colHeads = new Vector();
        colHeads.addElement("tablespace name");  // this is ugly fix later
        colHeads.addElement("initial extent");
        colHeads.addElement("next extent");
        colHeads.addElement("pct increase");
        colHeads.addElement("status");
        // construct a simple sql statement
        sqlStmt = "select  tablespace_name, initial_extent, next_extent, pct_increase, status";
        sqlStmt = sqlStmt+" from dba_tablespaces order by tablespace_name";
        try
          // connect to database
          DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
          Connection conn = DriverManager.getConnection(connectString, userName, password);
          // select data into object
          stmt = conn.createStatement();
          rslt = stmt.executeQuery(sqlStmt);
          while (rslt.next())
            for ( int i=0; i<numCols; i++ )
              columns.addElement(rslt.getObject(i+1));  // get the i+1 object
            }  // end for
            data.addElement(columns);
          }    // end while
          // create the table
          JTable table = new JTable(data,colHeads);
          // add table to scroll pane
          int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
          int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
          JScrollPane jsp = new JScrollPane(table,v,h);
          // Add scroll pane to content pane
          contentPane.add(jsp, BorderLayout.CENTER);
        } catch (SQLException ex)
          String msg = "SQL error: "+ex.toString();
        } catch (Exception ex)
          String msg = "Error: "+ex.toString();
      }                                     // end constructor
      public static void main(String[] args) {
          TableTest frame = new TableTest();
          frame.setSize(500, 400);
          frame.setTitle("TableTest");
          frame.setVisible(true);
    }  // TableTest end class

    if you are interested here is a generic table model for displaying ResultSets in a JTable. The resultset needs to support calling resultset meta data and the basic methods in there but then it should support anything you give it.
    import java.sql.*;
    import java.util.*;
    import javax.swing.table.*;
    public class ResultSetTableModel extends AbstractTableModel{
      Vector rows;          
      int[] types;          
      String[] names;     
      public ResultSetTableModel(ResultSet rs)throws SQLException{
        ResultSetMetaData rsmd = rs.getMetaData();          
        types = new int[rsmd.getColumnCount()];          
        names = new String[rsmd.getColumnCount()];          
        for(int n=0;i<types.length;n++){               
          types[n] = rsmd.getColumnType(n+1);
          names[n] = rsmd.getColumnName(n+1);     
        rows = new Vector();
        while(rs.next()){
          Vector aRow = new Vector();
          for(int j=0;j<types.length;j++){
               switch(types[j]){
              case Types.TINYINT:
                aRow.addElement(new Byte(rs.getByte(j+1)));
                break;
              case Types.SMALLINT:
                aRow.addElement(new Short(rs.getShort(j+1)));
                break;
                 case Types.INTEGER:
                   aRow.addElement(new Integer(rs.getInt(j+1)));
                   break;
                 case Types.BIGINT:
                   aRow.addElement(new Long(rs.getLong(j+1)));
                   break;
                 case Types.REAL:
                   aRow.addElement(new Float(rs.getFloat(j+1)));
                   break;
                 case Types.FLOAT:
                   aRow.addElement(new Double(rs.getDouble(j+1)));
                   break;
                 case Types.DOUBLE:
                   aRow.addElement(new Double(rs.getDouble(j+1)));
                   break; 
                 case Types.DECIMAL:
                   aRow.addElement(rs.getBigDecimal(j+1));
                   break;
                 case Types.NUMERIC:
                   aRow.addElement(new Long(rs.getLong(j+1)));
                   break;
                 case Types.BIT:
                   aRow.addElement(new Boolean(rs.getBoolean(j+1)));
                   break;
                 case Types.BINARY:
                   aRow.addElement(rs.getBytes(j+1));
                   break;
                 case Types.DATE:
                   aRow.addElement(rs.getDate(j+1));
                   break;
                 case Types.TIME:
                   aRow.addElement(rs.getTime(j+1));
                   break;
                 case Types.TIMESTAMP:
                   aRow.addElement(rs.getTimestamp(j+1));
                   break;           
                 default:
                   aRow.addElement(rs.getString(j+1));
          rows.addElement(aRow);           
      public Class getColumnClass(int column){
        switch(types[column]){
          case Types.BIT:
            return Boolean.class;
          case Types.DATE:
            return java.sql.Date.class;
          case Types.TIME:
            return java.sql.Time.class;
          case Types.TIMESTAMP:
            return java.sql.Timestamp.class;
          default:
            return Object.class;     
      public int getRowCount(){
        return rows.size();     
      public int getColumnCount(){
        return types.length;     
      public Object getValueAt(int row, int column){
        Vector aRow = (Vector) rows.elementAt(row);
        return aRow.elementAt(column);
      public String getColumnName(int column){
        return names[column];
    }

  • How to run a single sql statement

    I want to run a simple sql statement to get some data in my Controller or AM.
    Is there some way, other than creating a VO with the SQL statement, to get some data from the database. My sql query will always return a single row.

    Hi,
    here you have an example I use to call a function in a package (note how you can pass parameters and read results):
    Connection conn = this.getOADBTransaction().getJdbcConnection();
    OracleCallableStatement ocs = null;
    String param = null;
    try {
            String stmt = "BEGIN :1 := <PkgName>.<FunctionName>(:2); end;";
            ocs = (OracleCallableStatement)conn.prepareCall(stmt);
            ocs.registerOutParameter(1, OracleTypes.CHAR);
            ocs.setString(2, <param>);
            ocs.execute();
            param = ocs.getString(1);
         } catch(SQLException se) {
             throw OAException.wrapperException(se);
         finally {
             try {
                    ocs.close();
                    return(param);
             } catch(Exception e) {
                    throw OAException.wrapperException(e);
         }Hope this helps you
    Bye
    Raffy

  • Using cursor function in sql statement

    hi all
    can anyone plss explain why and when we will use cursor function in a sql statement like this and what is the difference while executing this sql statement with cursor function in comparison of a simple sql statement----
    select
    department_name,
    cursor (
    select last_name
    from employees e
    where e.department_id = d.department_id
    order by last_name
    ) the_employees
    from departments d
    thnx in advance

    RTFM
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/sqloperations.htm#sthref1452
    Cheers
    Sarma.

  • Explain plan for a sql statement

    Hi,
    I have a simple sql statement which has a cost of 122, cardinality 59 and CPU cost 1966777.
    Same sql statement written in another way (using a nested select in the 'from' clause), has a cost of 58, cardinality 24 but cpu cost is much higher 29078895.
    What should I look for? For a better cost overall, or for a better cpu cost? Which statement should I consider? What is most important?
    Thanks.

    Roger25 wrote:
    ... Based on this, my question is what statement to choose? which is more important, the cost or the cpu cost?
    Thanks.
    Based on this, sorry, but my reply will remain unchanged:
    Again, you cannot compare explain plan of two different queries.
    Find out more:
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:313416745628
    Nicolas.

Maybe you are looking for