ORA-22950: cannot Order Objects without MAP or ORDER method (line 15)

Hi
I have created a function
create type att_con.ind_field_value as object (s_owner varchar2(50), s_table varchar2(50), s_field varchar2(50));
create type att_con.ind_field_value_table as table of att_con.ind_field_value;
create or replace function fn_find_field_entries
(s_entry IN varchar2)
return ind_field_value_table
IS
found_count integer;
t_return ind_field_value_table := ind_field_value_table();
begin
for cur in (select owner, table_name, column_name
from all_tab_columns
where owner 'SYS'
and owner 'SYSTEM')
loop
execute immediate
'select count(' || cur.column_name || ') from ' || cur.owner || '.' || cur.table_name || ' where ' || cur.column_name || ' = ' || s_entry
into found_count;
if found_count 0 then
t_return.extend;
t_return(t_return.last) := (cur.owner, cur.table_name, cur.column_name);
end if;
end loop;
return t_return;
end;
and i am getting the above error when i try and run it with
select * from table(att_con.fn_find_field_entries('NDUNNE'))
anyone know what this error might mean?
thanks in advance

22950, 00000, "cannot ORDER objects without MAP or ORDER method"
// *Cause:  an object type must have a MAP or ORDER method defined for
//          all comparisons other than equality and inequality comparisons.
// *Action: Define a MAP or ORDER method for the object type
//

Similar Messages

  • ODI-1228: ORA-22950: cannot ORDER objects without MAP or ORDER method

    Simple interface between two schemas in the same oracle database (10g)
    I am trying to copy one table and do one simple lookup (in a table located in 3rd schema on the same database)
    Integration task fails on
    ODI-1228: Task messagexml_document (Integration) fails on the target ORACLE connection S2_P1.
    Caused By: java.sql.SQLException: ORA-22950: cannot ORDER objects without MAP or ORDER method
    Can anybody tell me, what I am doing wrong? Code that generate this error is just a simple INSERT with SELECT and sub SELECT with JOIN?
    I just can't find anything about this error.
    I'm stuck :-(

    I discovered that one of my fields is an XMLType field and is a part of comparison ODI do when it tries to do incremental update. The error message here is just a message from db that it can't compare XMLType fields to each other.
    Is there any way to learn ODI to not to compare by XMLType field?

  • ORA-22950 cannot ORDER objects without MAP or ORDER method

    Hello
    I'm receiving the above error message at the BULK COLLECT point. I've pasted all relevant code below - any help much appreciated. This has got me stumped....
    Thanks in advance
    Tim
    create or replace type PROG_MEDIA_TYP as object
    (episode_id number,
    house_number varchar2))
    create or replace type t_all_prog_medias as TABLE of PROG_MEDIA_TYP
    v_All_Prog_Media t_All_Prog_Medias ;
    SELECT DISTINCT Prog_Media_Typ(Pm.Episode_Id,
    Substr(Pm.House_Number, 1, 8)) BULK COLLECT
    INTO v_All_Prog_Media
    FROM Prog_Media Pm;

    This has to do with your "distinct" keyword. If you don't use distinct, everything is OK, but if you want to use distinct, you have to tell, HOW Oracle can distinguish between two "object members".
    First, we just select any record with bulk collect:
    SQL> create or replace type emp_media_type
      2    as object (
      3      empno    number,
      4      ename    varchar2(30)
      5    )
      6  /
    Type created.
    SQL> create or replace type t_emp_media_type as table of emp_media_type;
      2  /
    Type created.
    SQL> get t
      1  declare
      2    l_all_emp_media_type    t_emp_media_type;
      3  begin
      4    select emp_media_type(empno, ename)
      5    bulk collect into l_all_emp_media_type
      6    from   emp;
      7* end;
    SQL> /
    PL/SQL procedure successfully completed.This is working nicely. But if we want to have only distinct records, we first have to tell Oracle, how this distinction can be made. That is where the ORDER function comes into play.
    SQL> drop type t_emp_media_type;
    Type dropped.
    SQL> get tt
      1  create or replace type emp_media_type
      2    as object (
      3      empno    number,
      4      ename    varchar2(30),
      5      order member function sortorder(p_emp emp_media_type) return number
          -- this is now the order function to tell Oracle how two objects can be ordered
      6*   )
    SQL> /
    Type created.
    SQL> get type2.sql
      1  create or replace type body emp_media_type as
      2    order member function sortorder(p_emp emp_media_type) return number is
      3    begin
      4      if p_emp.empno < empno then
      5        return 1;
      6      elsif p_emp.empno > empno then
      7        return -1;
      8      else
      9        return 0;
    10      end if;
    11    end;
    12* end;
    SQL> /
    Type body created.
    SQL> create or replace type t_emp_media_type as table of emp_media_type;
      2  /
    Type created.
    SQL> get t
      1  declare
      2    l_all_emp_media_type    t_emp_media_type;
      3  begin
      4    select distinct emp_media_type(empno, ename)
      5    bulk collect into l_all_emp_media_type
      6    from   emp;
      7* end;
    SQL> /
    PL/SQL procedure successfully completed.
    SQL> You see how nicely it works once you have the order function defined?

  • ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_S

    Hi all,
    We are using Oracle 11g R2 RAC on OEL 5.6.
    After set the db_recovery_file_dest to FRA diskgroup,
    I forgot to set the DB_RECOVERY_FILE_DEST_SIZE, and I've started an instance,
    like this:
    SQL> ALTER SYSTEM SET db_recovery_file_dest='+FRA' SCOPE=spfile;
    System altered.
    SQL> commit;
    Commit complete.
    SQL> show parameter recover
    NAME                                 TYPE        VALUE
    db_recovery_file_dest                string
    db_recovery_file_dest_size           big integer 0
    recovery_parallelism                 integer     0
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> SQL> SQL>
    SQL>
    SQL>
    SQL>
    SQL>
    SQL> startup;
    ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZEI need to set the DB_RECOVERY_FILE_DEST_SIZE. How can I do this?
    I cannot to set this parameter when I startup with mount or nomount option.
    Thank you very much!

    Hi,
    So, you can set the parameter DB_RECOVERY_FILE_DEST_SIZE
    by using this other node:
    ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=<size> SCOPE=spfile;And in the first node with problems to start the instance you can start like this:
    SQL> startup;
    ORACLE instance started.
    Total System Global Area  835104768 bytes
    Fixed Size                  2217952 bytes
    Variable Size             624953376 bytes
    Database Buffers          201326592 bytes
    Redo Buffers                6606848 bytes
    ORA-01105: mount is incompatible with mounts by other instances
    ORA-19808: recovery destination parameter mismatchThe above error is normal in this moment because you must to set
    the parameters on other node too, like this:
    node2:
    ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=<size> SCOPE=spfile;
    ALTER SYSTEM SET db_recovery_file_dest='+FRA' SCOPE=spfile;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    node1:
    SHUTDOWN; (again)
    STARTUP; (now without any errors)
    Regards. :-)

  • Lock the production order creating without material for order type zp01

    Hi all,
    Good morning.My client wants to lock the production order creating without material for order type zp01.He does not want to create production order without material.Its very urgent.Please guide me the settings if any.
    Thanks and Regards
    Sukumar

    Hi Sukumar,
    You can do by applying user exit.
    Use PPCO0007 - Exit when saving production order.
    Function module - EXIT_SAPLCOZV_001.
    Include Program - ZXCO1U06
    Write your Code:
    *&  Include           ZXCO1U06
    Regards,
    Sankaran

  • ORA-22979: cannot INSERT object view REF or user-defined REF

    I'm getting this error when trying to insert a parent_type object into an object table. The parent object contains a nested table of parent object references.
    CREATE TYPE cl_ArgList AS TABLE OF REF cl_Expression
    CREATE TYPE cl_Expression AS OBJECT (
    args cl_ArgList;
    Somehow the system-generated parent object REF that is returned from one STATIC function (using MAKE_REF) turns into a incompatible REF by the time it is passed to aother STATIC function and used in the constructor of the nested table for a new args instance.
    Does anybody know how this might be happening?
    Is there any way to test if a REF is a valid system-generated REF vs. a user-defined REF?
    I don't even know what a user-defined REF is, how I might be getting one, and what's wrong with it anyway. Shouldn't strong-typing ensure that the REF is okay if it is of the appropriate type?
    Glenn.

    Okay, solved that.
    FYI the problem is that the nested table arguments (REF cl_Expression) have to be SCOPED REFs, ie. constrained to refer only to objects in a particular table (although I don't really understand why).
    Then of course the trick is how to constrain the arguments in the nested table, because you can't do it in the CREATE TYPE statement. You also can't do it when you create the containing table, when you define how the nested table is stored:
    CREATE TABLE <containing table> OF cl_Expression (
    NESTED TABLE args STORE AS t_args
    Instead you have to modify the nested table properties after it has been created:
    ALTER TABLE t_args ADD (SCOPE FOR (column_value) IS t_Induhvidual);
    'column_value' is the actual syntax, not your own column name.
    But you probably knew that ;-)

  • Ora-22950 OBIEE OE.CUST_ADDRESS_TYP OBJECT

    Hi,
    I'm working with OBIEE with OE(orders Entry) scheme. In the phisical layer of the administration tool, the customers table have a column named CUST_ADRESS and this
    column is an OE.CUST_ADDRESS_TYP object, what can I do to populate this column? becouse when I select the update row count option, the admin tool give me this error:
    *ORA-22950: cannot ORDER objects without MAP or ORDER method at OCI call OCIStmtExecute. [nQSError: 17010] SQL statement preparation failed. (HY000)....*
    Thanks

    Hi,
    I'm working with OBIEE with OE(orders Entry) scheme. In the phisical layer of the administration tool, the customers table have a column named CUST_ADRESS and this
    column is an OE.CUST_ADDRESS_TYP object, what can I do to populate this column? becouse when I select the update row count option, the admin tool give me this error:
    *ORA-22950: cannot ORDER objects without MAP or ORDER method at OCI call OCIStmtExecute. [nQSError: 17010] SQL statement preparation failed. (HY000)....*
    Thanks

  • ORA-22950 when selecting geometry and using union

    Any query where results are UNIONed where an sdo_geometry is in the selection list (such as the one below) gives me "ORA-22950 cannot ORDER objects without MAP or ORDER method".
    select p.point_id id, p.geom from point p
    union
    select l.line_id id, l.geom from line l
    Perhaps it's possible to define a map or order method for sdo_geometry (or perhaps not), but I don't want to order by geometry.
    I'm running this within SQL Plus (either 8.1.5.0.0 or 8.1.6.0.0 will do it)
    and am connecting to
    "Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.6.0.0 - Production"
    I tried adding an order by clause to order by id, to no effect.
    Any ideas?

    Hi Ben,
    The use of the union operator tells Oracle only to return a unique set of rows, hence a sort is done (in this case attempted, since there is no geometry sorting routine).
    If you choose union all, then no sort will be attempted.
    Hope this helps,
    dan

  • Ora-22950 when comparing XML

    Hi,
    I want to compare two tables for differences using MINUS, but this does an implicit ORDER BY. So I get the error:
    ORA-22950: cannot ORDER objects without MAP or ORDER method
    Does anyone know how to get round this ? Convering to CLOB (col1.getclobval()) also doesn't work:
    CREATE TABLE dunc1 (col1 XMLTYPE);
    CREATE TABLE dunc2 (col1 XMLTYPE);
    SELECT col1 FROM dunc1
    MINUS
    SELECT col1 FROM dunc2;
    TIA, Duncan

    Hi
    I get the same error (ORA-22950: cannot ORDER objects without MAP or ORDER method) when I try to fetch values from individual nodes in xmltype column from 2 tables with a union.
    select tbl1.xmlcol.extract('//abc/ns1:def','xmlns:ns1="http://xy.z.org/"').getStringVal() col1,
    tbl1.xmlcol.extract('//abc/ns1:ghi/text()','xmlns:ns1="http://abc.def.org/"') as col2
    from table1 tbl1
    union
    select tbl2.xmlcol.extract('//xyz/ns1:def','xmlns:ns1="http://xy.z.org/"').getStringVal() col1,
    tbl2.xmlcol.extract('//xyz/ns1:ghi/text()','xmlns:ns1="http://abc.def.org/"') as col2
    from table2 tbl2;
    What am I doing wrong here?
    Thx!

  • Cannot drop object?

    I am simply following the CBT nuggets fundamentals course and did the following:
    create sequence seq_int_by1
    INCREMENT BY 1 START WITH 1 MINVALUE 1;
    create sequence SEQ_testsequence
    increment by 100 start with 1000
    maxvalue 100000 minvalue 1000 cache 20;
    rename seq_testsequence to seq_junkme;
    drop sequence seq_junkme;
    Everything works except the last statement for which i get the following error:
    Error report:
    SQL Error: ORA-00604: error occurred at recursive SQL level 1
    ORA-20000: Cannot drop Object
    ORA-06512: at line 2
    00604. 00000 - "error occurred at recursive SQL level %s"
    *Cause:    An error occurred while processing a recursive SQL statement
    (a statement applying to internal dictionary tables).
    *Action:   If the situation described in the next error on the stack
    can be corrected, do so; otherwise contact Oracle Support.
    Any ideas why i cannot drop this sequence?
    Your help is greatly appreciated!

    what is your db version?
    I am able to do (below on 10g)
    test1> create sequence seq_int_by1
    INCREMENT BY 1 START WITH 1 MINVALUE 1;
    create sequence SEQ_testsequence
    increment by 100 start with 1000
    maxvalue 100000 minvalue 1000 cache 20;
    rename seq_testsequence to seq_junkme; 2
    Sequence created.
    Elapsed: 00:00:00.01
    test1> GEM@ZBKTST1> 2 3
    Sequence created.
    Elapsed: 00:00:00.01
    test1> drop sequence seq_junkme;
    Sequence dropped.
    Elapsed: 00:00:00.01
    Edited by: vlethakula on Feb 18, 2013 7:37 AM

  • PI 7.1 EHP1 SP3, Message Mapping cannot select object in the folder ?

    Hi,
    I am very new with PI 7.1 EHP1, i am not sure whether there is some new restriction or bug, because i was trying to create Data Type, Message Type in site the folder, but the Message Mapping cannot select those object insite the folder. The message mapping only can select those object without folder.
    Please advise ?
    Thank You and Best Regards
    Fernand Lesmana

    Hi Swarup,
    I just finish installed the PI 7.1 EHP1 SP03, so i would like to test the functionality of the PI. just create 2 DT 2 MT insite the folder.
    but when i am trying to create Message Mapping, the message mapping, i can't find these 2 MT ???.
    after that i created new MT but outsite of the folder (still same namespaces) and the message mapping can see the MT ?
    so i can make sure not duplication coz i just create those object.
    any idea ?
    Thank you and Best Regards
    Fernand Lesmana

  • Re: ORA-13249: SDO_NN cannot be evaluated without using index

    hi professionals,
    Iam having problem while capturing the map..it is giving errors like...
    ora-13249: SDO_NN cannot be evaluated without using index
    ora-0652: at MDSYS.MD
    ora-0652: at MDSYS.MDERR
    ora-0652: at MDSYS.PRVT_IDX...
    the particular sector is not capturing in the map...
    and some times...
    if we click outside the map also the particular sector which is nearer to cllicked point is getting captured...can you please help me regarding this..
    its very urgent...
    Edited by: naraharikk on Mar 18, 2009 3:53 AM

    It is likely that the optimizer is picking a plan that does not use spatial index and SDO_NN requires spatial index to be used.
    So you have to give hints to make sure Spatial index is picked for your query.
    Something like this:
    SELECT /*+ LEADING(b) INDEX(a cola_spatial_idx) */ a.gid
    FROM cola_qry b, cola_markets a
    WHERE b.gid =1 AND
    SDO_NN(a.shape, b.shape, 'sdo_num_res=1')='TRUE';

  • ORA-01445: cannot select ROWID from, or sample, a join view without a key-p

    Hi All,
    I am facing issue with one sql query. It is giving me error:
    ORA-01445: cannot select ROWID from, or sample, a join view without a key-preserved table
    I am not getting any clue to solve this. On internet, i didn't find proper reason for this error and troubleshooting way and solution for this error. Everywhere i saw one sentence, "Key preserved means the row from the base table will appear AT MOST ONCE in the output view on that table" but it didn't solve my problem.
    I have 1099 columns in one select query. so avoiding the actual column list in select clause. Instead I am trying to select ROWIDs from all tables in join. My understanding is ROWID is a unique identifier in table not in database. But though I remove ROWIDs, I get same error. So please don't bother about these ROWIDs.
    SELECT
    TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD')
    ,FACT.ROWID AS ABC1
    ,FACT_ADJ.ROWID AS ABC2
    ,DIM_SEC.ROWID AS ABC3
    ,DIM_SEC_ADJ.ROWID AS ABC4
    ,DIS_CAT.ROWID AS ABC5
    ,CTRY.ROWID AS ABC6
    ,BCP.ROWID AS ABC7
    ,STAGE.ROWID AS ABC8
    FROM FACT_POSITION FACT
    LEFT JOIN FACT_POSITION_ADJ FACT_ADJ ON FACT.POSITION_PKID = FACT_ADJ.POSITION_FKID
    LEFT JOIN DIM_SOURCE_SYSTEM SOURCE ON FACT.SOURCE_SYSTEM_FKID = SOURCE.SOURCE_SYSTEM_PKID
    LEFT JOIN DIM_SECURITY DIM_SEC ON FACT.SUBSYS_SECURITY_FKID = DIM_SEC.SECURITY_PKID
    LEFT JOIN DIM_SECURITY_ADJ DIM_SEC_ADJ ON FACT.SUBSYS_SECURITY_FKID = DIM_SEC_ADJ.SECURITY_PKID
    LEFT JOIN DIM_DISCLOSURE_CATEGORY DIS_CAT ON FACT.DISCLOSURE_CATEGORY_FKID = DIS_CAT.DISCLOSURE_CATEGORY_PKID
    LEFT JOIN COUNTRY_REFERENCE CTRY ON CTRY.DESCRIPTION = DIM_SEC.ISSUER_COUNTRY
    LEFT JOIN BUSINESS_CLOSE_PERIOD BCP
    ON BCP.BUSINESS_CLOSE_DATE = ADD_MONTHS(TRUNC(TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD'),'MM'), 1) -1
    AND BCP.IS_LOCKED='Y' AND BCP.IS_ACTIVE='Y'
    LEFT JOIN GUI_STAGING STAGE ON
    FACT.POSITION_PKID=STAGE.POSITION_PKID
    AND STAGE.IS_ACTIVE='Y'
    AND STAGE.STATUS_ID IN(12,8,1,2,3,4,5)
    WHERE FACT.POSITION_PKID=64524374;
    While trying to sort this error, I found interesting things that made me more confused.
    if I remove TO_DATE function from select clause, same join query works.
    If I remove any table from join and keep TO_DATE function in select clause, query works.
    That tells, there is no problem in query.
    Then please anyone help me to sort out the error. FYI. I have googled a lot for this error. but didn't get solution/clue. That is why I am posting this problem to forum.
    Thanks in advance. waiting for reply ASAP.
    Pravin Pujari
    [email protected]

    I think i got the solution. The syntax i was using (ANSI syntax) doesn't work in the oracle database version i am using.
    When i updated my query with older oracle syntax, it worked.
    SELECT
    TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD')
    ,FACT.ROWID AS ABC1
    ,FACT_ADJ.ROWID AS ABC2
    ,SOURCE.ROWID AS ABC3
    ,DIM_SEC.ROWID AS ABC4
    ,DIM_SEC_ADJ.ROWID AS ABC5
    ,DIS_CAT.ROWID AS ABC6
    ,CTRY.ROWID AS ABC7
    ,BCP.ROWID AS ABC8
    ,STAGE.ROWID AS ABC8
    FROM [email protected] FACT
    ,[email protected] FACT_ADJ
    ,[email protected] SOURCE
    ,[email protected] DIM_SEC
    , [email protected] DIM_SEC_ADJ
    , [email protected] DIS_CAT
    , GUI.COUNTRY_REFERENCE CTRY
    , GUI.BUSINESS_CLOSE_PERIOD BCP
    , GUI.GUI_STAGING STAGE
    WHERE FACT.POSITION_PKID=64517140
    AND FACT_ADJ.POSITION_FKID(+) = FACT.POSITION_PKID
    AND SOURCE.SOURCE_SYSTEM_PKID=FACT.SOURCE_SYSTEM_FKID
    AND DIM_SEC.SECURITY_PKID=FACT.SUBSYS_SECURITY_FKID
    AND DIM_SEC_ADJ.SECURITY_PKID(+)=DIM_SEC.SECURITY_PKID
    AND FACT.DISCLOSURE_CATEGORY_FKID = DIS_CAT.DISCLOSURE_CATEGORY_PKID
    AND CTRY.DESCRIPTION = DIM_SEC.ISSUER_COUNTRY
    AND BCP.BUSINESS_CLOSE_DATE = ADD_MONTHS(TRUNC(TO_DATE(FACT.BUS_DATE_FKID,'YYYYMMDD'),'MM'), 1) -1
    AND BCP.IS_ACTIVE='Y'
    AND FACT.POSITION_PKID=STAGE.POSITION_PKID
    AND STAGE.IS_ACTIVE='Y'
    AND STAGE.STATUS_ID IN(12,8,1,2,3,4,5);

  • Problem in updating fa_additions SQL Error: ORA-01779: cannot modify a column which maps to a non key-preserved table

    Hi,
    After using sql loader to import informations in the table fa_mass_additions and after the functionnal uses a treatment to imputate this assets, it asks me to do an update on the table fa_additions to change the value of attribute1 but i get an error
    Error report:
    ORA-01779: cannot modify a column which maps to a non key-preserved table
    ORA-06512: at line 11
    01779. 00000 -  "cannot modify a column which maps to a non key-preserved table"
    *Cause:    An attempt was made to insert or update columns of a join view which
               map to a non-key-preserved table.
    *Action:   Modify the underlying base tables directly.
    please how can i do this update?

    Hi,
    The "fa_additions" is a view, not a table.
    You should update the base table "fa_additions_b".
    Regards,
    Bashar

  • ORA-22292: Cannot open a LOB in read-write mode without a transaction

    Hi ,
    somebody can help me, what is that problem.
    I run the script by using the Oracle SQL developer to update the clob column.
    error message is :
    ORA-22292: Cannot open a LOB in read-write mode without a transaction.
    Regards,
    Message was edited by:
    user533045

    Without posting the code its difficult for anyone to figure out whats wrong with this
    error.Please paste the code.
    Khurram

Maybe you are looking for