Exp & Query option causing EXP-00056 ORA-00904

Experts,
Database Version: 9.2.0.4.0
I'm trying to export with using query option, But having below errors.
Any suggestions Please.
exp system/***** tables=ORDERS_TN file=ORDERS_TN.dmp log=ORDERS_TN.log query=\" WHERE ORDERS_ID IN \('A1','A201','A3'\) \"
Export: Release 9.2.0.4.0 - Production on Wed Feb 1 21:42:02 2012
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table                     ORDERS_TN
EXP-00056: ORACLE error 904 encountered
ORA-00904: "A3": invalid identifier
Export terminated successfully with warnings.Thanks.

Hello,
The preferred way to use the query option is to use it in the parfile, because the query option may have special characters within its values which need to be escaped and every OS has its own way of escaping those characters. So in order to make it portable and easy, create a file parfile and use that in the export command.
For example create a file myval.txt and put following query in it:
query="WHERE ORDERS_ID IN ('A1','A201','A3')"
and then use export command as:
exp system/***** tables=ORDERS_TN file=ORDERS_TN.dmp log=ORDERS_TN.log parfile=myval.txt
regards
Fahd

Similar Messages

  • Exp 报EXP-00008: ORACLE error 904 encountered;ORA-00904错误

    环境:RAC11gR2+Redhat6.1
    [oracle@bppfedb1 mouse]$ exp BPPF_EAS/ApNCNOZqGx BUFFER=64000 FILE='/home/oracle/mouse/exp_bppf_tvs20121126.DMP' log='/home/oracle/mouse/exp_bppf_tvs20121126.log' OWNER=BPPF_EAS
    Export: Release 11.2.0.3.0 - Production on Tue Nov 27 00:12:16 2012
    Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, Oracle Label Security,
    OLAP, Data Mining,
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    server uses ZHS16GBK character set (possible charset conversion)
    About to export specified users ...
    . exporting pre-schema procedural objects and actions
    . exporting foreign function library names for user BPPF_EAS
    . exporting PUBLIC type synonyms
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: : invalid identifier
    EXP-00000: Export terminated unsuccessfully
    使用
    expdp BPPF_EAS/ApNCNOZqGx directory=DATA_PUMP_DIR dumpfile=exp_bppf_tvs20121126.dmp schemas=BPPF_EAS logfile=exp_bppf_tvs20121126.log
    换用expdp可以成功
    尝试了几台服务器都遇到这个问题,暂时没有找到问题的原因

    问题已解决:
    ORACLE error 904 问题是因为回收了public 的dbms_java执行权限,重新授予解决。
    trace=y需要的权限问题: 应该需要grant dba to xxx; 单exp_full_database好像不行,下面是测试的情况
    when the Data Pump TRACE parameter is used in Oracle10g Release 2 or higher, then the user who connects to the database and runs the export DataPump job needs to have the DBA role or the EXP_FULL_DATABASE role (the same applies to Import DataPump with TRACE parameter: DBA or IMP_FULL_DATABASE role required), e.g.:
    GRANT exp_full_database TO scott;
    -- or:
    GRANT dba TO expdp_role;
    测试:
    oracle@linux:~/mouse> sqlplus /nolog
    SQL*Plus: Release 11.2.0.1.0 Production on Wed Dec 5 07:23:00 2012
    Copyright (c) 1982, 2009, Oracle. All rights reserved.
    SQL> conn /as sysdba
    Connected.
    SQL> drop user mouse cascade;
    User dropped.
    SQL> create user mouse identified by mouse_2012
    2 default tablespace users
    3 temporary tablespace temp
    4 quota unlimited on users ;
    grant connect to mouse;
    grant resource to mouse;
    grant select any table to mouse;
    grant select any dictionary to mouse;
    grant exp_full_database to mouse;
    User created.
    SQL>
    Grant succeeded.
    SQL>
    Grant succeeded.
    SQL>
    Grant succeeded.
    SQL>
    Grant succeeded.
    SQL>
    Grant succeeded.
    SQL>
    SQL>
    SQL> conn mouse/mouse_2012
    create table test as select * from dba_users;Connected.
    SQL>
    Table created.
    SQL> !
    oracle@linux:~/mouse> exp mouse/mouse_2012 tables=test file=test.dmp feedback=100000 buffer=10000000 indexes=y triggers=y trace=y;
    Export: Release 11.2.0.1.0 - Production on Wed Dec 5 07:24:35 2012
    Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
    EXP-00056: ORACLE error 1031 encountered
    ORA-01031: insufficient privileges
    EXP-00000: Export terminated unsuccessfully
    oracle@linux:~/mouse> exit
    exit
    SQL> conn /as sysdba
    Connected.
    SQL> grant dba to mouse;
    Grant succeeded.
    SQL> !
    oracle@linux:~/mouse> exp mouse/mouse_2012 tables=test file=test.dmp feedback=100000 buffer=10000000 indexes=y triggers=y trace=y;
    Export: Release 11.2.0.1.0 - Production on Wed Dec 5 07:24:50 2012
    Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    server uses ZHS16GBK character set (possible charset conversion)
    About to export specified tables via Conventional Path ...
    . . exporting table TEST
    33 rows exported
    Export terminated successfully without warnings
    继续跟踪

  • Ora-00904 error during Export

    Hi ,
    I am facing a problem in export utility 8i database, this is occuring after i installed the packaes required for java stored procedure, any suggestion is appreciated
    L:\>exp userid=ubs/ubs owner=scott file=test.dmp log=test.log
    Export: Release 8.1.7.0.0 - Production on Tue Jul 9 13:37:31 2002
    (c) Copyright 2000 Oracle Corporation. All rights reserved.
    Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - Production
    Export done in WE8ISO8859P1 character set and UTF8 NCHAR character set
    server uses UTF8 character set (possible charset conversion)
    About to export specified users ...
    . exporting pre-schema procedural objects and actions
    . exporting foreign function library names for user SCOTT
    . exporting object type definitions for user SCOTT
    About to export SCOTT's objects ...
    . exporting database links
    . exporting sequence numbers
    . exporting cluster definitions
    . about to export SCOTT's tables via Conventional Path ...
    . . exporting table TEMP 0 rows exported
    . exporting synonyms
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: invalid column name
    EXP-00000: Export terminated unsuccessfully
    thankyou in advance for a reply
    Regards
    bala

    It might be that you have not ran the exp script to build the correct views.
    Some applications build tables with double quotes around them to force the table or view names to lower case. exp doesn't play well with that. You may have to go through and rename all the objects that were creates case specific.

  • "ORA-00904: "POLTYP": invalid identifier" in export

    First I got errors when I did the export with an export tool of Release 11.1.0.7.0 and there were lot of ORA-00904 and ORA-01003 like the following:
    XP-00008: ORACLE error 904 encountered
    ORA-00904: "MAXSIZE": invalid identifier
    . . exporting table XRATE_INFO
    EXP-00008: ORACLE error 1003 encountered
    ORA-01003: no statement parsed
    Then I tried to do export with another version of export tool (Release 10.2.0.4.0) The errors changed to the following:
    .about to export FM's tables via Direct Path...
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: "POLTYP": invalid identifier
    EXP-00000: Export terminated unsuccessfully
    The export tool I used is of Release 10.2.0.4.0
    Has anyone had similar problems before?
    Edited by: 910547 on Jan 26, 2012 7:31 PM

    910547 wrote:
    First I got errors when I did the export with an export tool of Release 11.1.0.7.0 and there were lot of ORA-00904 and ORA-01003 like the following:
    XP-00008: ORACLE error 904 encountered
    ORA-00904: "MAXSIZE": invalid identifier
    . . exporting table XRATE_INFO
    EXP-00008: ORACLE error 1003 encountered
    ORA-01003: no statement parsed
    Then I tried to do export with another version of export tool (Release 10.2.0.4.0) The errors changed to the following:
    .about to export FM's tables via Direct Path...
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: "POLTYP": invalid identifier
    EXP-00000: Export terminated unsuccessfully
    The export tool I used is of Release 10.2.0.4.0
    Has anyone had similar problems before?
    Edited by: 910547 on Jan 26, 2012 7:31 PMThis possibly a bug raise SR with Oracle Support

  • ORA-00904: "IFREEPOOL": invalid identifier

    Hi experts,
    When i am trying to export table containing BLOB data then i am getting the error
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: "IFREEPOOL": invalid identifier
    Please suggest some solution how to export Blob field of a table...
    Thanks In Advance...
    Asit...
    Edited by: Asit Kumar Mohanty on Feb 22, 2013 3:42 AM

    how you make the export? database version? OS?
    also check:
    Compatibility Matrix for Export And Import Between Different Oracle Versions [Video] [ID 132904.1]
    Errors ORA-904 EXP-8 On Traditional Export (EXP) In 10.2.0.4 [ID 968322.1]
    VN204084 OMU: EXP-00008: ORACLE error 904 encountered. ORA-00904: invalid colu [ID 613976.1]

  • ORA-00904 when exporting job queues

    Hi!
    I have a 8.1.6.3.7 database (although you only see 8.1.6.3.0) when you log in) which I'm trying to export.
    Everything is fine until the time comes to export job queues. I then get the following error messages:
    EXP-00008: ORACLE error 904 encountered
    ORA-00904: invalid column name
    EXP-00000: Export terminated unsuccessfully
    Now, I've just spent my morning looking through the discussion forums to see if anyone else had this error, but no luck.
    What I've done:
    - Rerun catexp: no change
    - ensured that I'm running the same version of the RDBMS and export (v8.1.6.3(.7) and 8.1.6.3.0): ok?
    Any ideas anyone?
    Thanks,
    Kevin

    Hi Prathmesh,
    in fact I saw this very thread before and I made sure that both solutions were applied. Moreover as I said patch 6991626 had already been applied earlier, precisley to fix this problem, and I've had been able to successfully export other albeit somewhat smaller schemas (500M instead of 3GB) in the last few months. This is why I was so puzzled to see that exact bug raise its ugly head again. As far as I can tell I didn't do any modification to the DB since that last patch in nov. 2009. In fact the DB has been running pretty much untouched since then.
    I even tried yestereday to reinstalled the patch again; opatch does the operation gracefully, first rolling back the patch then reapplying it again, with only a warning about the patch being already present. However the pb does not get fixed any better.
    Thanks a lot for your help,
    Chris

  • Does  oracle 9i support inctype option in exp or not?

    I want to know whether oracle 9i supports inctype option in exp or not......
    if not then how to take a incremental export..........
    Exp userid=DBA/password full=Y inctype=cumulative file=’010399cml.dmp’
    i am getting an error message
    EXP-00042: INCTYPE parameter is obsolete
    although exp command is working even after generating an error........

    EXP-00041 INCTYPE parameter is obsolete
    Cause : Export encountered when parsing the parameter INCTYPE Export options. Incremental Exports are no longer supported.
    Action : Consult the Oracle9i User-Managed Backup and Recovery Guide. Export will attempt to continue.
    This incremental into law has become obsolete, not to be supported.

  • Problem in using query parameter in exp(9.2)

    Hi Folks,
    I'm not able to take export from a table with query option on a Solaris machine. here is my parameter file which has query parameter in it. I'm also posting error message.
    file=utf_exp_raw_citation.dmp
    log=utf_exp_raw_citation.log
    owner=utf8admin
    statistics=none
    tables=raw_citation
    query=\"where nvl(source,'AAA') in ('EMC','HMD','HSR','KIE','NASA','PIP','AAA')"\
    rows=y
    Error:-*
    $ exp utf8admin/[email protected] parfile=exp_raw_citation_07_01_2011_new.dat
    LRM-00116: syntax error at ')' following 'AAA'
    LRM-00113: error when processing file 'exp_raw_citation_07_01_2011_new.dat'
    EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
    EXP-00000: Export terminated unsuccessfully
    Please help me in this.
    regards
    Krishna Prasad Donepudi

    I suggest you utilize a parameter file to avoid the shell messing with metacharacters on command line

  • ORA-00904 - invalid identifier when adding new column to the report query

    Hi,
    I am trying to add a new field to an existing bespoke report query. When I click on ok, I get the following error
    message: "ORA-00904: <field name> : invalid identifier ==> <field_name>
    Any ideas what is causing this problem? Version of the report builder is : 6.0.8 and is connected to a 10.2 db.
    Any help appreciated.
    Many Thanks,
    Praveen
    Edited by: praveenrn on May 21, 2009 2:38 PM

    What is the field name ? Maybe a reserved word ? Change to "my_new_variable" to check...
    Cheers,
    Jens Rettig

  • Parallel Query Error (Ora 12801 Ora-00904)

    when i run this particular query in a report or in SQL it wrks
    but some times it give the error .........
    any one who could help ........ASAP
    SELECT
    D.DISTRIBUTOR_CODE "DIST_CODE",
    D.DISTRIBUTOR_NAME "DIST_NAME",
    O.OPERATOR_CODE "OPER_CODE",
    O.OPERATOR_NAME "OPER_NAME",
    O.ACTIVE_STATUS "Act",
    r.receipt_no "receipt_no",
    r.ch_or_dd_no "cheque",
    r.receipt_date "receipt_date",
    '' "channel Code",
    '' "channel_name",
    b. SUBS_IRD "ird_subs",
    b.amount "amount"
    FROM
    dms_channel_dump z,
    DMS_OPERATOR_MASTER O,
    DMS_DISTRIBUTOR_MAIN D,
    dms_receipt_header r,
    DMS_BIFURCATION b
    WHERE
    b.channel_code = z.channel_code
    and r.OPERATOR_CODE = O.OPERATOR_CODE
    AND r.DISTRIBUTOR_CODE = D.DISTRIBUTOR_CODE
    AND r.receipt_no = b.receiopt_no
    union all
    SELECT
    D.DISTRIBUTOR_CODE "DIST_CODE",
    D.DISTRIBUTOR_NAME "DIST_NAME",
    '' "OPER_CODE",
    '' "OPER_NAME",
    'N' "Act",
    r.receipt_no "receipt_no",
    r.ch_or_dd_no "cheque",
    r.receipt_date "receipt_date",
    b.channel_code "channel Code",
    z.channel_name "channel_name",
    b. SUBS_IRD "ird_subs",
    b.amount "amount"
    FROM
    dms_channel_dump z,
    DMS_OPERATOR_MASTER O,
    DMS_DISTRIBUTOR_MAIN D,
    dms_receipt_header r,
    DMS_BIFURCATION b
    WHERE
    b.channel_code = z.channel_code
    and r.OPERATOR_CODE is null
    AND r.DISTRIBUTOR_CODE = D.DISTRIBUTOR_CODE
    AND r.receipt_no = b.receiopt_no
    order by 4,7
    ERROR:
    ORA-12801: error signaled in parallel query server P004
    ORA-00904: invalid column name
    no rows selecte
    REGARDS AND TIA
    ADOLPH

    If the data never changes, there would be no reason to gather statistics.
    If the data changes, there may or may not be a reason to gather statistics. There is some risk to gathering statistics because that can cause query plans to change and you could find that a query that was working fine yesterday is running very slowly today. Failing to gather statistics, though, can have the same effect-- if a histogram on a column indicates that the maximum value of a date field is December 1, 2006 because you haven't updated statistics in a few days, the CBO may conclude that a query this column with a value of December 4 would return very few row, rather than the many rows that are really there, causing Oracle to use a different query plan. Oracle tends to believe that the latter risk is more of a concern than the former and in 10g regularly and automatically gathers statistics unless you susped that job. Some DBAs disagree with Oracle and prefer less frequent, more controlled statistics gathering.
    If you GATHER AUTO, assuming your tables are set to MONITORING, Oracle gathers statistics on every table that has had more than some cutoff percentage of rows changed since statistics were last gathered. This cutoff is generally pretty reasonable, though ideally you'd probably want to gather statistics more frequently on smaller tables (adding 30 new rows to a 100 row table is probably more significant from a query plan perspective than adding 3 million rows to a 10 million row table) and less frequently on larger tables, more frequently on tables that have volatile data distributions (i.e. our DATE table) and less frequently on tables whose data distribution is relatively constant.
    Justin

  • ORA-00904 when use column alias in Record Group Query

    Is it possible to use column aliases in Record Group Queries?
    I have a query that runs fine in SQL*Developer, but gives me runtime errors when I use it as a Record Group Query.
    When I use it as a Record Group Query, the Form compiles, but at runtime I receive the following errors:
    FRM-40502: ORACLE error: unable to read list of values
    when I use Help - Display Error, I see:
    ORA-00904:"CHILDNAME":invalid identifier
    The query is something like this
    select decode(complex stuff here) as "childname" ....
    I've tried it with and without the double quotes surrounding the alias name, and have also tried it without using the "as" keyword.
    I would appreciate any suggestions or insights. I'm using Forms 9.0.4.
    Thanks.

    It looks like this is caused by bug 725059:
    "FILTER BEFORE DISPLAY" DOESN'T WORK IF LOV HAS COLUMN ALIASES (TRIAGE1098)
    My LOV does have the Filter Before Display turned on. Here's the text of the bug:
    IF an LOV is created with column aliases in the select statement, (eg: select ename emp_name from emp) and the LOV property "Filter Before Display" is "Yes", THEN when you attempt to filter the LOV at runtime, (eg: type '%' then press the 'Find' button) the internal WHERE clause that forms sends to the database is: WHERE column_alias LIKE '%%' This is incorrect syntax. A client-side sqlnet trace shows this. The correct syntax should be: WHERE column LIKE '%%' . The incorrect syntax results in no rows returned. However no error is displayed by forms to the user.

  • Getting ora:00904 invalid indentifier error while running i query

    Hi,
    I have a remote database and local database both are oracle 10gR2.Now i have written the below mentioned query in my local database and is working fine,but in case remote database it is throughing error ora:00904 invalid indentifier.
    I had export the dump from remote db and import it on my local db and i tried the same and it is working fine on local after that also.
    As i believe that this error usually come for column name not exist or column name or it's length or for any special character in column name of the table.But as i said it is working fine on local db but not in remote db though i am using the same dump for local and remote.
    Though when i am querying the table i can able to fetch data for the any record but when i am using the below mentioned query for the same i am getting the error.As i am doing this to fecth the data for child parent related relationship.
    Can any one suggest is there anything related to configaration or something else.
    Please do let me know if you do want some more information on the query what i am doing inside of it.
    Rgds,
    Anit
    Edited by: Anit A. on Sep 1, 2008 2:32 AM
    Edited by: Anit A. on Sep 1, 2008 2:33 AM

    WITH t
    AS
    SELECT decode(t.spnlevel
    ,3,t.u_quotesdtlid
    ,2,decode((select count(*)
    from u_quotesdtl t2
    where t2.u_quotesdtlid = t.u_quotesdtlid
    and t2.parentspn = (t2.jobgroupid||':'||t2.jobtype)
    ),0,(select t1.u_quotesdtlid
    from u_quotesdtl t1
    where t1.spnitemcode = t.parentspn
    and t1.spnlevel = '3'
    and t1.jobtype = t.jobtype
    and t1.jobgroupid = t.jobgroupid
    and t1.QUOTEID = t.QUOTEID
    ),t.u_quotesdtlid
    ,1,decode((select count(*)
    from u_quotesdtl t2
    where t2.QUOTEID = t.QUOTEID
    and t2.parentspn = (t2.jobgroupid||':'||t2.jobtype)
    ),0,t.u_quotesdtlid,decode((select count(*)
    from u_quotesdtl t3
    where t3.QUOTEID = t.QUOTEID
    and t3.parentspn = (t3.jobgroupid||':'||t3.jobtype)
    and t3.u_quotesdtlid in (select t1.u_quotesdtlid
    from u_quotesdtl t1
    where t1.spnitemcode = t.parentspn
    and t1.spnlevel = '2'
    and t1.jobtype = t.jobtype
    and t1.jobgroupid = t.jobgroupid
    and t1.QUOTEID = t.QUOTEID
    ),0,(select t4.u_quotesdtlid
    from u_quotesdtl t4
    ,(select t1.parentspn
    ,t1.jobtype
    ,t1.jobgroupid
    from u_quotesdtl t1
    where t1.spnitemcode = t.parentspn
    and t1.spnlevel = '2'
    and t1.jobtype = t.jobtype
    and t1.jobgroupid = t.jobgroupid
    and t1.QUOTEID = t.QUOTEID
    ) t5
    where t4.spnitemcode = t5.parentspn
    and t4.spnlevel = '3'
    and t4.jobtype = t5.jobtype
    and t4.jobgroupid = t5.jobgroupid
    and t4.QUOTEID = t.QUOTEID
    (select t1.u_quotesdtlid
    from u_quotesdtl t1
    where t1.spnitemcode = t.parentspn
    and t1.spnlevel = '2'
    and t1.jobtype = t.jobtype
    and t1.jobgroupid = t.jobgroupid
    and t1.QUOTEID = t.QUOTEID
    ,null,t.u_quotesdtlid) as parentquoteid
    ,t.u_quotesdtlid as quotesdtlid
    ,t.spnlevel as spnlevel
    FROM u_quotesdtl t
    WHERE t.QUOTEID ='som key id'
    ORDER BY parentquoteid,t.spnlevel desc
    select * from t;

  • Multi-row sub query returns  ORA-00904 :invalid identifier error

    I am creating a report from two tables that I am not joining. I want a single line for every row in table1 that meets a date range. Table2 can contain none or many rows for each recored in table1. I want to get up to two fields from table2.
    I was using a case statement to check if there was data and then an in-line query or subquery. Once again, the idea is to have a single line on the report for each table1 record.
    I get this error with the code below. It seems the nested multi-row subquery can not see the a.cr_mas_cr_no identifier.
    ORA-00904: "a"."cr_mas_cr_no": invalid identifier
    Any help is greatly appreciated,
    Sam
    select
    a.cr_mas_cr_no "CRNO", a.cr_mas_type "TYPE", a.cr_mas_status "CR Status",
    a.cr_mas_date_logged "Logged date", a.CR_REL_REQ_APP_DATE "RTP approved",a.CR_REL_REQ_RTP_DATE "RTP Date",
    a.cr_accepted_date "Complete", a.cr_mas_submitted_by "Requester",
    select doc_user FROM crrm_cr_documents WHERE doc_cr_number =a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'BD' ) "Bus Design",
    (select doc_user FROM crrm_cr_documents WHERE doc_cr_number = a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'TD' ) "Tech Design",
    (select doc_user FROM crrm_cr_documents WHERE doc_cr_number = a.cr_mas_cr_no and rownum = 1 and DOC_TYPE = 'TE' ) "User acceptance test",
    case
    when (select count(appr_user) from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') > 0
    then (select appr_user from (select * from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    end
    "RTP #1",
    case
    when (select count(appr_user) from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') > 1
    then (select appr_user from (select * from crrm_cr_approvals where appr_cr_no = a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 2)
    end
    "RTP #2",
    a.CR_REL_REQ_RTP_BY "Released by",
    a.CR_ACCEPTED_BY "Post RTP User Acceptance",
    a.cr_mas_title "Title", a.cr_mas_id "ID"
    from
    crrm_crmaster a
    where
    (a.CR_REL_REQ_RTP_DATE >= :P1109_BEGDATE and (a.CR_REL_REQ_RTP_DATE <= :P1109_ENDDATE) and
    (a.cr_mas_status = 'Complete' or (a.cr_mas_status = 'Release Approved'and a.CR_REL_REQ_APP_DATE < :P1109_ENDDATE))
    Message was edited by:
    slavanaway

    Iceman,
    Thanks for the reply I will try your suggestion.
    I will try and explain why I think two subqueries (an in-line query with a subquery?) are required. I will use the creation of the column RTP #1 as the example as the RTP #2 column is only different in the rownum selected.
    Looking only at the lines that fail, here is my analysis. (If I rem out the two case lines the query runs, I just don't get two columns of data I need.) I will only examine the first case as the second is changed to extract the second approval via the rownum = 2 criteria. The first statement checks there is at least one RTP approval stored for the request and then gets the user who approved the request if the test is true.
    case when
    (select count(appr_user) from crrm_cr_approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP') > 0
    then
    The above part works fine and the correct count of approvals is returned.
    (select appr_user from (select * from crrm_cr_approvals where appr_cr_no=a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    end
    "RTP #1",
    I moved the parenthesis to the correct location. There can be multiple approvals for a given parent record. Some parent records need one, some need two approvals. If I replace
    (select appr_user from (select * from crrm_cr_approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP') where rownum = 1)
    with
    (select appr_user from approvals where appr_cr_no =a.cr_mas_cr_no and appr_type = 'RTP' and rownum = 1)
    The correct result is returned because it returns exactly one row as rownum=1 limits the query. When rownum = 2 then the query returns null as the rownum never gets to two as the rownum column is built via the set created by the second subquery.
    The subquery builds a set of approvals for a specific "cr_no" and appr_type of "RTP". the outer query then looks at the rownum of the second query
    Here is where I got the rownum information from;
    http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
    So here is what I think is happening;
    1. Main query From and Where are processed. This should provide the "set" for the query
    2.The from subqueries for RTP #1 and RTP #2 should be able to access the a.cr_mas_cr_no field and build a set from the approvals table.
    3.The RTP #1/2 subquery (inline maybe a better description?) would then get the correct row from the from subquery.
    The error "invalid identifier" refers to the a.cr_mas_cr_no field. I assume it means it can not resolve the table alias inside the subquery.
    So maybe your grouping would help, I will try.
    Sam

  • Same exact update runs fine in one db but causes ORA-00904 in another

    I have an update statement that runs fine in one db but causes "" error in another. The two databases table structures are the same. I checked for synonyms and reserved words on BASE and COMPANY_ID but did not come up with anything. The db where it is working is 10.2. The db where it is not working is 10.1.
    Here is the statement:
    1 UPDATE t_company base
    2 SET (company_name, company_name_sid, company_name_lco, canonical_name,
    3 short_name, short_name2) =
    4 (SELECT company_name, source_id, company_name_lco, canonical_name,
    5 short_name, short_name2
    6 FROM t_auth_company comp
    7 WHERE comp.company_id = base.company_id
    8 AND source_id =
    9 (SELECT source_id
    10 FROM (SELECT auth.source_id, trumping_order
    11 FROM t_auth_company auth,
    12 t_trumping_rule rl
    13 WHERE auth.company_id = base.company_id
    14 AND auth.company_name IS NOT NULL
    15 AND rl.source_id = auth.source_id
    16 AND rl.attribute_id = 'abc'
    17 ORDER BY rl.trumping_order)
    18 WHERE ROWNUM = 1))
    19 WHERE
    20 (-- The company has been updated
    21 company_id IN (
    22 SELECT company_id
    23 FROM t_auth_company auth
    24 WHERE auth.company_name_lco >= sysdate
    25 OR auth.company_id_lco >= sysdate)
    26 OR
    27 ( -- The trumping rule for the attribute has been changed
    28 SELECT MAX(last_changed_on)
    29 FROM t_trumping_rule rl
    30 WHERE rl.attribute_id = 'abc' ) >= sysdate
    31 )
    32 -- The company has been merged
    33 AND 1 < (SELECT COUNT (*)
    34 FROM t_auth_company auth
    35* WHERE auth.company_id = base.company_id)
    SQL> /
    WHERE auth.company_id = base.company_id
    ERROR at line 13:
    ORA-00904: "BASE"."COMPANY_ID": invalid identifier
    Thank You
    Boris

    Thank you for responding. It is syntactically working in the 10.2 database. Please, see this:
    SQL> UPDATE t_company base
    2 SET (company_name, company_name_sid, company_name_lco, canonical_name,
    3 short_name, short_name2) =
    4 (SELECT company_name, source_id, company_name_lco, canonical_name,
    5 short_name, short_name2
    6 FROM t_auth_company comp
    7 WHERE comp.company_id = base.company_id
    8 AND source_id =
    9 (SELECT source_id
    10 FROM (SELECT auth.source_id, trumping_order
    11 FROM t_auth_company auth,
    12 t_trumping_rule rl
    13 WHERE auth.company_id = base.company_id
    14 AND auth.company_name IS NOT NULL
    15 AND rl.source_id = auth.source_id
    16 AND rl.attribute_id = 'abc'
    17 ORDER BY rl.trumping_order)
    18 WHERE ROWNUM = 1))
    19 WHERE
    20 (-- The company has been updated
    21 company_id IN (
    22 SELECT company_id
    23 FROM t_auth_company auth
    24 WHERE auth.company_name_lco >= sysdate
    25 OR auth.company_id_lco >= sysdate)
    26 OR
    27 ( -- The trumping rule for the attribute has been changed
    28 SELECT MAX(last_changed_on)
    29 FROM t_trumping_rule rl
    30 WHERE rl.attribute_id = 'abc' ) >= sysdate
    31 )
    32 -- The company has been merged
    33 AND 1 < (SELECT COUNT (*)
    34 FROM t_auth_company auth
    35 WHERE auth.company_id = base.company_id)
    36 /
    0 rows updated.
    SQL>
    The table structures are as follows:
    CREATE TABLE RTCR_UCDB.T_AUTH_COMPANY
    AUTH_COMPANY_ID NUMBER(22),
    SOURCE_ID NUMBER(3) NOT NULL,
    LD_COMPANY_ID NUMBER(22),
    SOURCE_COMPANY_ID VARCHAR2(150 BYTE),
    MATCH_DECISION NUMBER(1) DEFAULT 0 NOT NULL,
    MATCH_DECISION_LCO DATE DEFAULT sysdate,
    COMPANY_ID NUMBER(22),
    COMPANY_ID_LCO DATE,
    COMPANY_NAME VARCHAR2(150 BYTE),
    COMPANY_NAME_LCO DATE DEFAULT sysdate,
    CANONICAL_NAME VARCHAR2(150 BYTE),
    SHORT_NAME VARCHAR2(150 BYTE),
    SHORT_NAME2 VARCHAR2(150 BYTE),
    URL VARCHAR2(150 BYTE),
    URL_LCO DATE DEFAULT sysdate,
    NURL VARCHAR2(150 BYTE),
    PRIMARY_SIC VARCHAR2(150 BYTE),
    PRIMARY_SIC_LCO DATE DEFAULT sysdate,
    PRIMARY_TICKER VARCHAR2(15 BYTE),
    PRIMARY_TICKER_LCO DATE DEFAULT sysdate,
    EXCHANGE_ID VARCHAR2(60 BYTE),
    EXCHANGE_ID_LCO DATE DEFAULT sysdate,
    NEXCHANGE_ID VARCHAR2(60 BYTE),
    ADDRESS VARCHAR2(150 BYTE),
    ADDRESS_LCO DATE DEFAULT sysdate,
    NADDRESS VARCHAR2(150 BYTE),
    NADDRESS_CONTAINS VARCHAR2(150 BYTE),
    CITY VARCHAR2(150 BYTE),
    CITY_LCO DATE DEFAULT sysdate,
    NCITY VARCHAR2(150 BYTE),
    STATE VARCHAR2(150 BYTE),
    STATE_LCO DATE DEFAULT sysdate,
    NSTATE VARCHAR2(150 BYTE),
    POSTAL_CODE VARCHAR2(15 BYTE),
    POSTAL_CODE_LCO DATE DEFAULT sysdate,
    NPOSTAL_CODE VARCHAR2(15 BYTE),
    COUNTRY_ID VARCHAR2(10 BYTE),
    COUNTRY_ID_LCO DATE DEFAULT sysdate,
    NCOUNTRY_ID VARCHAR2(10 BYTE),
    TELEPHONE VARCHAR2(60 BYTE),
    TELEPHONE_LCO DATE DEFAULT sysdate,
    NPHONE VARCHAR2(60 BYTE),
    PHONE_7D VARCHAR2(60 BYTE),
    PHONE_AREA VARCHAR2(60 BYTE),
    FAX VARCHAR2(60 BYTE),
    FAX_LCO DATE DEFAULT sysdate,
    NFAX VARCHAR2(60 BYTE),
    GW_COMPANY_ID VARCHAR2(150 BYTE),
    GW_COMPANY_ID_LCO DATE DEFAULT sysdate,
    CIK_NUMBER VARCHAR2(150 BYTE),
    CIK_NUMBER_LCO DATE DEFAULT sysdate,
    IRS_EIN VARCHAR2(150 BYTE),
    IRS_EIN_LCO DATE DEFAULT sysdate,
    MIN_DATA_FLAG VARCHAR2(1 BYTE) DEFAULT 'N' NOT NULL,
    OBSOLETE_FLAG VARCHAR2(1 BYTE) DEFAULT 'N' NOT NULL,
    OBSOLETE_FLAG_LCO DATE,
    LAST_CHANGED_BY VARCHAR2(50 BYTE) DEFAULT user NOT NULL,
    LAST_CHANGED_ON DATE DEFAULT sysdate NOT NULL,
    CREATED_ON DATE NOT NULL
    CREATE TABLE RTCR_UCDB.T_TRUMPING_RULE
    SOURCE_ID NUMBER(3) NOT NULL,
    ATTRIBUTE_ID NUMBER(5) NOT NULL,
    TRUMPING_ORDER NUMBER(3),
    LAST_CHANGED_BY VARCHAR2(50 BYTE) DEFAULT USER,
    LAST_CHANGED_ON DATE DEFAULT sysdate
    CREATE TABLE RTCR_UCDB.T_COMPANY
    COMPANY_ID NUMBER(22),
    COMPANY_NAME VARCHAR2(150 BYTE),
    COMPANY_NAME_SID NUMBER(3),
    COMPANY_NAME_LCO DATE,
    CANONICAL_NAME VARCHAR2(150 BYTE),
    SHORT_NAME VARCHAR2(150 BYTE),
    SHORT_NAME2 VARCHAR2(150 BYTE),
    URL VARCHAR2(150 BYTE),
    URL_SID NUMBER(3),
    URL_LCO DATE,
    NURL VARCHAR2(150 BYTE),
    PRIMARY_SIC VARCHAR2(150 BYTE),
    PRIMARY_SIC_SID NUMBER(3),
    PRIMARY_SIC_LCO DATE,
    PRIMARY_TICKER VARCHAR2(15 BYTE),
    PRIMARY_TICKER_SID NUMBER(3),
    PRIMARY_TICKER_LCO DATE,
    EXCHANGE_ID VARCHAR2(60 BYTE),
    EXCHANGE_ID_SID NUMBER(3),
    EXCHANGE_ID_LCO DATE,
    NEXCHANGE_ID VARCHAR2(60 BYTE),
    ADDRESS VARCHAR2(150 BYTE),
    ADDRESS_SID NUMBER(3),
    ADDRESS_LCO DATE,
    NADDRESS VARCHAR2(150 BYTE),
    CITY VARCHAR2(150 BYTE),
    CITY_SID NUMBER(3),
    CITY_LCO DATE,
    NCITY VARCHAR2(150 BYTE),
    STATE VARCHAR2(150 BYTE),
    STATE_SID NUMBER(3),
    STATE_LCO DATE,
    NSTATE VARCHAR2(150 BYTE),
    POSTAL_CODE VARCHAR2(15 BYTE),
    POSTAL_CODE_SID NUMBER(3),
    POSTAL_CODE_LCO DATE,
    NPOSTAL_CODE VARCHAR2(15 BYTE),
    COUNTRY_ID VARCHAR2(10 BYTE),
    COUNTRY_ID_SID NUMBER(3),
    COUNTRY_ID_LCO DATE,
    NCOUNTRY_ID VARCHAR2(10 BYTE),
    TELEPHONE VARCHAR2(60 BYTE),
    TELEPHONE_SID NUMBER(3),
    TELEPHONE_LCO DATE,
    NPHONE VARCHAR2(60 BYTE),
    PHONE_7D VARCHAR2(60 BYTE),
    PHONE_AREA VARCHAR2(60 BYTE),
    FAX VARCHAR2(60 BYTE),
    FAX_SID NUMBER(3),
    FAX_LCO DATE,
    NFAX VARCHAR2(60 BYTE),
    GW_COMPANY_ID VARCHAR2(150 BYTE),
    GW_COMPANY_ID_SID NUMBER(3),
    GW_COMPANY_ID_LCO DATE,
    CIK_NUMBER VARCHAR2(150 BYTE),
    CIK_NUMBER_SID NUMBER(3),
    CIK_NUMBER_LCO DATE,
    IRS_EIN VARCHAR2(150 BYTE),
    IRS_EIN_SID NUMBER(3),
    IRS_EIN_LCO DATE,
    LAST_CHANGED_BY VARCHAR2(50 BYTE) DEFAULT user NOT NULL,
    LAST_CHANGED_ON DATE DEFAULT sysdate NOT NULL,
    CREATED_ON DATE NOT NULL
    )

  • Oracle query on dblinked SQL Server tables returns ORA-00904 error

    Hi,
    I have created a dblink to a SQL Server database from Oracle using Generic Connectivity.
    The following query returns ORA-00904 Invalid Identifier error in the WHERE clause (tblEmp.Empno)
    SELECT "EmpNo","EmpName", "DeptName"
    FROM tblEmp@sqlserver,
    tblDept@sqlserver
    WHERE tblDept.DeptNo = tblEmp.Empno
    I had to enclose the column names in double quotes due to case sensitivitiy of the columns, but I can't do the
    same for the WHERE clause.
    1) So, how do I fix this error ?
    2) Also how do I include Deptno column with table alias in the columns list?
    (Deptno is ambiguous in Emp and Dept tables)
    Regards,
    Sam

    Alex
    Because using the aliases all the time can become annoying and lead to disparate standards when used by multiple developers. For a one-off query I would go with aliases in the query but if the linked tables are going to be interrogated extensively I would prefer to create vanilla views of the underlying tables so that the aliases aren't necessary.
    Just my opinion, it feels a bit cleaner to do it this way - you only do the work once in creating the view and then you don't need to worry about the case sensitivity of the linked database. You can also refer to the source in the name of the view so you don't have to think about different source databases with the same table names.
    Cheers
    Ben

Maybe you are looking for