Doubt with Function

Hi all,i am trying to create a function as shown below.
SELECT rcv.quantity "Receiving Quantity"
--INTO   v_qty                          (variable)
FROM   rcv_shipment_headers rsh,
       rcv_shipment_lines   rsl,
       rcv_transactions rcv
WHERE  rsh.receipt_source_code = 'VENDOR'
AND    rsh.shipment_num =  'JAN1008'         -- p_file_number(parameter to function)
AND    rsh.shipment_header_id = rsl.shipment_header_id
AND    rcv.organization_id = 81
AND    rcv.transaction_type = 'RECEIVE'
AND    rsh.shipment_header_id = rcv.shipment_header_id
AND    rcv.shipment_line_id = rsl.shipment_line_id;
--AND    rsl.item_id = p_item_id;The above query returns two values,but as i assigned a variable to the function i could only get one value.Can someone guide me how to return multiple values from the above query into a variable(v_qty).
Any help is appreciated,
Thanks in advance!!

Suri wrote:
Thanks for correcting me. But I didnt understand completely. Can you please explain me indetail what do you mean by STANDARD ARRAY ? If possible can you post a small script. Thanks a ton in advance.
SQL> declare
  2          --// associative array
  3          type TArr1 is table of varchar2(10) index by pls_integer;
  4 
  5          --// standard array
  6          type TArr2 is table of varchar2(10);
  7 
  8          arr1    TArr1;
  9          arr2    TArr2;
10  begin
11          --// associative arrays are name-value pairs
12          arr1(100) := 'name1';   --// 100=name1
13          arr1(1) := 'name2';     --// 1=name2
14 
15 
16          --// standard arrays are sequential lists
17          --// of values
18          arr2 := new TArr2( 'name1', 'name2' );
19  end;
20  /
PL/SQL procedure successfully completed.
SQL> In the above example, you cannot iterate through the associative array using a sequential number. E.g. the following does not work:
SQL> declare
  2          type TArr1 is table of varchar2(10) index by pls_integer;
  3          arr1    TArr1;
  4  begin
  5          arr1(100) := 'name1';
  6          arr1(1) := 'name2';
  7 
  8          for i in 1..arr1.Count loop
  9                  dbms_output.put_line( i||'='||arr1(i) );
10          end loop;
11  end;
12  /
1=name2
declare
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 9The reason is that there is no name-value called "+2+" in the array. And name-value "+1+" was the LAST entry in the array too. The first name-value is "+100+".
So it does not make sense to use an associative array as a sequential array - where the 1st item in the array is referenced using 1, the 2nd item is referenced using 2 and so on.
What does make sense is using a standard array instead. As the reference used to access items in the array, is basically the address (offset) of the item in the array. The address of the 1st item in the array is 1. The address of the 2nd item in the array is 2. Etc.
SQL> declare
  2          type TArr2 is table of varchar2(10);
  3          arr2    TArr2;
  4  begin
  5          arr2 := new TArr2( 'name1', 'name2' );
  6 
  7          for i in 1..arr2.Count loop
  8                  dbms_output.put_line( i||'='||arr2(i) );
  9          end loop;
10  end;
11  /
1=name1
2=name2
PL/SQL procedure successfully completed.
SQL> And this is exactly what is required for a bulk collection and bulk processing - sequential addressing of items in the array. Not name-value pairs where an item value is addressed by its associated item name.
This is an important difference between the two types of array. And one does not seem to be readily understood by developers, resulting in most usage of associative arrays in PL/SQL being incorrect - especially when used for bulk collection.

Similar Messages

  • Doubt with Implicit Enhacement in SAP ABAP

    Dear.
    I have the following doubt with the Implicit Enhacement in SAP ABAP created by me in several applications standard-
    If I Create an Implicit Enhacement in SAP ABAP for a function module or program standard , when the team basis is doing an upgrade the code abap created in the Implicit Enhacement not is deleted?
    I have created several Implicit Enhacement for Applications WD ABAP and FM, but I have this doubt.
    http://wiki.sdn.sap.com/wiki/display/ABAP/HowToDoImplicitEnhancement
    Thanks a lot in advance.
    Carmen G.

    Hi,
    you code will be retain after upgrade. If you have done implicit enhancements doesnt mean your code would get deleted after upgrades.
    In some cases you might have to activate your enhancments using SPAU.
    Thanks

  • Doubt with creation of Model in the application Webdynpro Java

    Good Morning,
    I have the following doubts with the fields when i am creating a models in WebDynpro Java
    Model Package
    Source Fólder
    Default logical system name for model instances
    Default logical system name for RFC metadata
    Logical Dictionary
    Dictionary Type Package.
    Can Help me?
    Kind Regards

    Hi,
        Please check this link:
    [https://wiki.sdn.sap.com/wiki/display/WDJava/FAQ%20-%20Models%20-%20Adaptive%20Web%20Service]
    Thanks and Regards

  • Doubts in functional upgradation from 3.x to 7.0.

    Hi All,
    I have some doubts in functional upgradation from 3.x to 7.0.
    After migration of Transfer rules, update rules ( between the ods & cube also) & datasource.
    1). Cube & ods have filed which is added like enhanced field, do we have to do anything after migration for that filed.
    2). Is the Z object also will get migrated automatically or not ( i have zfield in the datasource).
    3). If i have a routines in the trans rules & update rules, what has to be done for these routines
    4). How the custom reports, deliverd reports and workbooks will get migrated.
    5). Macros in the web templets ( is the macros coding in the web templets also will get migrated auto matically r do we need to rewrite the coding).
    6). Is the migration steps are same for the all SD, MM, FI datasources.

    1. this should not be a problem
    2. IO is not needed to be migrated, it is not changed so much between 3x. and 7.x
    3. routines & update rules in the trans rules are migrated automatically, see
    http://help.sap.com/saphelp_nw70ehp1/helpdata/en/43/f00e2696d24c5fe10000000a155369/frameset.htm
    https://wiki.sdn.sap.com/wiki/display/BI/Migrationof3.xobjectstoBI7.0
    4. reports are to be migrated manually, see http://wiki.sdn.sap.com/wiki/display/BI/Migrationof3.xBExQueriestoBI7.0-Useful+Tips
    5. see https://wiki.sdn.sap.com/wiki/display/BI/QueriesorWorkbooksMigration-ErrorsandFixes
    6. in general yes.

  • PDF Documents with Functional Buttons - Works for IE and FireFox but not for Chrome and Safari

    To all,
    Good morning.  Our institution developed a PDF document with functional buttons for printing and e-mailing.  When the document is viewed via Internet Explorer and Firefox, the functional buttons work as expected.  However if the document is viewed via Chrome and Safari, the functional buttons do not work.  The workaround for those who are using Chrome and Safari, the PDF document needs to be saved to their local drive before the functional buttons work.
    Has anyone experienced this issue before?  If yes, what was your solution other than the workaround.
    Thanks.
    Babylon5

    Here's how to configure your browser to run Adobe Reader: http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html

  • Scaleability with Functions in SQL queries

    Hi,
    In one of our applications we have many views that use a packaged function in the where clause to filter data. This function uses a SYS_CONTEXT() to set and get values. There are couple of issues while using this approach:
    1/ The deterministic function doesn't allow any scability with PQ-server.
    2/ Another issue with this function and also the SYS_CONTEXT-function, they manuipulate the estimated CBO-statistics.
      CREATE TABLE TAB_I
      COLUMN1 NUMBER(16, 0) NOT NULL
    , COLUMN2 VARCHAR2(20)
    , CONSTRAINT TAB_I_PK PRIMARY KEY
        COLUMN1
      ENABLE
    CREATE TABLE TAB_V
        I_COL1     NUMBER(16,0) NOT NULL ENABLE,
        VERSION_ID NUMBER(16,0) NOT NULL ENABLE,
        CRE_DATIM TIMESTAMP (6) NOT NULL ENABLE,
        TERM_DATIM TIMESTAMP (6) NOT NULL ENABLE,
        VERSION_VALID_FROM DATE NOT NULL ENABLE,
        VERSION_VALID_TILL DATE NOT NULL ENABLE,
        CONSTRAINT TAB_V_PK PRIMARY KEY (I_COL1, VERSION_ID) USING INDEX NOCOMPRESS LOGGING ENABLE,
        CONSTRAINT COL1_FK FOREIGN KEY (I_COL1) REFERENCES TAB_I (COLUMN1) ENABLE
    CREATE OR REPLACE
    PACKAGE      app_bitemporal_rules IS
    FUNCTION f_knowledge_time RETURN TIMESTAMP DETERMINISTIC;
    END app_bitemporal_rules;
    create or replace
    PACKAGE BODY      app_bitemporal_rules IS
    FUNCTION f_knowledge_time RETURN TIMESTAMP DETERMINISTIC IS
    BEGIN
         RETURN TO_TIMESTAMP(SYS_CONTEXT ('APP_USR_CTX', 'KNOWLEDGE_TIME'),'DD.MM.YYYY HH24.MI.SSXFF');
    END f_knowledge_time;
    END app_bitemporal_rules;
    explain plan for select *
    FROM tab_i
    JOIN tab_v
    ON tab_i.column1 = tab_v.i_col1
    AND           app_bitemporal_rules.f_knowledge_time BETWEEN tab_v.CRE_DATIM AND tab_v.TERM_DATIM
    where tab_i.column1 = 11111;
    select * from table(dbms_xplan.display);
    Plan hash value: 621902595
    | Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT             |          |     1 |    95 |     5   (0)| 00:00:06 |
    |   1 |  NESTED LOOPS                |          |     1 |    95 |     5   (0)| 00:00:06 |
    |   2 |   TABLE ACCESS BY INDEX ROWID| TAB_I    |     1 |    25 |     1   (0)| 00:00:02 |
    |*  3 |    INDEX UNIQUE SCAN         | TAB_I_PK |     1 |       |     1   (0)| 00:00:02 |
    |*  4 |   TABLE ACCESS FULL          | TAB_V    |     1 |    70 |     4   (0)| 00:00:05 |
    Predicate Information (identified by operation id):
       3 - access("TAB_I"."COLUMN1"=11111)
       4 - filter("TAB_V"."I_COL1"=11111 AND
                  "TAB_V"."CRE_DATIM"<="APP_BITEMPORAL_RULES"."F_KNOWLEDGE_TIME"() AND
                  "TAB_V"."TERM_DATIM">="APP_BITEMPORAL_RULES"."F_KNOWLEDGE_TIME"())
    Note
       - 'PLAN_TABLE' is old version
       - dynamic sampling used for this statement (level=2)
    explain plan for select *
    FROM tab_i
    JOIN tab_v
    ON tab_i.column1 = tab_v.i_col1
    AND           '10-OCT-2011' BETWEEN tab_v.CRE_DATIM AND tab_v.TERM_DATIM
    where tab_i.column1 = 11111;
    select * from table(dbms_xplan.display);  
    Plan hash value: 621902595
    | Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT             |          |   256 | 24320 |     5   (0)| 00:00:06 |
    |   1 |  NESTED LOOPS                |          |   256 | 24320 |     5   (0)| 00:00:06 |
    |   2 |   TABLE ACCESS BY INDEX ROWID| TAB_I    |     1 |    25 |     1   (0)| 00:00:02 |
    |*  3 |    INDEX UNIQUE SCAN         | TAB_I_PK |     1 |       |     1   (0)| 00:00:02 |
    |*  4 |   TABLE ACCESS FULL          | TAB_V    |   256 | 17920 |     4   (0)| 00:00:05 |
    Predicate Information (identified by operation id):
       3 - access("TAB_I"."COLUMN1"=11111)
       4 - filter("TAB_V"."I_COL1"=11111 AND "TAB_V"."CRE_DATIM"<=TIMESTAMP'
                  2011-10-10 00:00:00.000000000' AND "TAB_V"."TERM_DATIM">=TIMESTAMP' 2011-10-10
                  00:00:00.000000000')
    Note
       - 'PLAN_TABLE' is old version
       - dynamic sampling used for this statement (level=2)   As can be seen in the second plan the cardinality has been guessed correctly, but not in the first case.
    I have also tried with:
    ASSOCIATE STATISTICS WITH packages app_bitemporal_rules DEFAULT COST (1000000/*246919*/,1000,0) DEFAULT SELECTIVITY 50;
    But, this just leads to a increased cost, but no change in cardinality.
    The (1) problem gets solved if I directly use "TO_TIMESTAMP(SYS_CONTEXT ('APP_USR_CTX', 'KNOWLEDGE_TIME'),'DD.MM.YYYY HH24.MI.SSXFF')" in the where clause. But am not able to find a solution for the (2) issue.
    Can you please help.
    Regards,
    Vikram R

    Hi Vikram,
    On the subject of using [url http://download.oracle.com/docs/cd/E11882_01/server.112/e26088/statements_4006.htm#i2115932]ASSOCIATE STATISTICS, having done a little investigation on 11.2.0.2, I'm having trouble adjusting selectivity via "associate statististics ... default selectivity" but no problems with adjusting default cost.
    I've also tried to do the same using an interface type and am running into other issues.
    It's not functionality that I'm overly familiar with as I try to avoid/eliminate using functions in predicates.
    Further analysis/investigation required.
    Including test case of what I've done so far in case anyone else wants to chip in.
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE    11.2.0.2.0      Production
    TNS for Linux: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    SQL> drop table t1;
    Table dropped.
    SQL>
    SQL> create table t1
      2  as
      3  select rownum col1
      4  from   dual
      5  connect by rownum <= 100000;
    Table created.
    SQL>
    SQL> exec dbms_stats.gather_table_stats(USER,'T1');
    PL/SQL procedure successfully completed.
    SQL>
    SQL> create or replace function f1
      2  return number
      3  as
      4  begin
      5   return 1;
      6  end;
      7  /
    Function created.
    SQL>
    SQL> create or replace function f2 (
      2   i_col1 in number
      3  )
      4  return number
      5  as
      6  begin
      7   return 1;
      8  end;
      9  /
    Function created.
    SQL> Created one table with 100000 rows.
    Two functions - one without arguments, one with (for later).
    With no associations:
    SQL> select * from user_associations;
    no rows selected
    SQL> Run a statement that uses the function:
    SQL> select count(*) from t1 where col1 >= f1;
      COUNT(*)
        100000
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  gm7ppkbzut114, child number 0
    select count(*) from t1 where col1 >= f1
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   139 (100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   139  (62)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F1"())
    19 rows selected.
    SQL> Shows that default selectivity of 5% for an equality predicate against function.
    Let's try to adjust the selectivity using associate statistics - the argument for selectivity should be a percentage between 0 and 100:
    (turning off cardinality feedback for clarity/simplicity)
    SQL> alter session set "_optimizer_use_feedback" = false;
    Session altered.
    SQL>
    SQL> ASSOCIATE STATISTICS WITH FUNCTIONS f1 default selectivity 100;
    Statistics associated.
    SQL> select count(*) from t1 where col1 >= f1;
      COUNT(*)
        100000
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  gm7ppkbzut114, child number 1
    select count(*) from t1 where col1 >= f1
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   139 (100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   139  (62)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F1"())
    19 rows selected.
    SQL> Didn't make any difference to selectivity.
    An excerpt from a 10053 trace file had the following:
    ** Performing dynamic sampling initial checks. **
    ** Dynamic sampling initial checks returning FALSE.
      No statistics type defined for function F1
      No default cost defined for function F1So, crucially what's missing here is a clause saying:
    No default selectivity defined for function F1But there's no other information that I could see to indicate why it should be discarded.
    Moving on, adjusting the cost does happen:
    SQL>exec spflush;
    PL/SQL procedure successfully completed.
    SQL> disassociate statistics from functions f1;
    Statistics disassociated.
    SQL>
    SQL> ASSOCIATE STATISTICS WITH FUNCTIONS f1 default selectivity 100 default cost (100,5,0);
    Statistics associated.
    SQL> select count(*) from t1 where col1 >= f1;
      COUNT(*)
        100000
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  gm7ppkbzut114, child number 0
    select count(*) from t1 where col1 >= f1
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   500K(100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   500K  (1)| 00:41:41 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F1"())
    19 rows selected.
    SQL> And we see the following in a 10053:
      No statistics type defined for function F1
      Default costs for function F1 CPU: 100, I/O: 5So, confirmation that default costs for function were found and applied but nothing else about selectivity again.
    I wondered whether the lack of arguments for function F1 made any difference, hence function F2.
    Didn't seem to:
    Vanilla:
    SQL> select count(*) from t1 where col1 >= f2(col1);
      COUNT(*)
        100000
    SQL>
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  2wxw32wadgc1v, child number 0
    select count(*) from t1 where col1 >= f2(col1)
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   139 (100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   139  (62)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F2"("COL1"))
    19 rows selected.
    SQL> Plus association:
    SQL>exec spflush;
    PL/SQL procedure successfully completed.
    SQL>
    SQL> associate statistics with functions f2 default selectivity 90 default cost (100,5,0);
    Statistics associated.
    SQL> select count(*) from t1 where col1 >= f2(col1);
      COUNT(*)
        100000
    SQL>
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  2wxw32wadgc1v, child number 0
    select count(*) from t1 where col1 >= f2(col1)
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   500K(100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   500K  (1)| 00:41:41 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F2"("COL1"))
    19 rows selected.
    SQL> Just to confirm associations:
    SQL> select * from user_associations;
    OBJECT_OWNER                   OBJECT_NAME                    COLUMN_NAME                    OBJECT_TY
    STATSTYPE_SCHEMA               STATSTYPE_NAME                 DEF_SELECTIVITY DEF_CPU_COST DEF_IO_COST DEF_NET_COST
    INTERFACE_VERSION MAINTENANCE_TY
    RIMS                           F2                                                            FUNCTION
                                                                               90          100           5
                    0 USER_MANAGED
    RIMS                           F1                                                            FUNCTION
                                                                              100          100           5
                    0 USER_MANAGED
    SQL> So.... started thinking about whether using an interface type would help?
    SQL> CREATE OR REPLACE TYPE test_stats_ot AS OBJECT
      2  (dummy_attribute NUMBER
      3  ,STATIC FUNCTION ODCIGetInterfaces (
      4     ifclist                OUT SYS.ODCIObjectList
      5   ) RETURN NUMBER
      6  ,STATIC FUNCTION ODCIStatsSelectivity (
      7      pred                   IN  SYS.ODCIPredInfo,
      8      sel                    OUT NUMBER,
      9      args                   IN  SYS.ODCIArgDescList,
    10      strt                   IN  NUMBER,
    11      stop                   IN  NUMBER,
    12      --i_col1                 in  NUMBER,
    13      env                    IN  SYS.ODCIEnv
    14   ) RETURN NUMBER
    15  --,STATIC FUNCTION ODCIStatsFunctionCost (
    16  --    func                   IN  SYS.ODCIPredInfo,
    17  --    cost                   OUT SYS.ODCICost,
    18  --    args                   IN  SYS.ODCIArgDescList,
    19  --    i_col1                 in  NUMBER,
    20  --    env                    IN  SYS.ODCIEnv
    21  -- ) RETURN NUMBER
    22  );
    23  /
    Type created.
    SQL> CREATE OR REPLACE TYPE BODY test_stats_ot
      2  AS
      3   STATIC FUNCTION ODCIGetInterfaces (
      4    ifclist                OUT SYS.ODCIObjectList
      5   ) RETURN NUMBER
      6   IS
      7   BEGIN
      8    ifclist := sys.odciobjectlist(sys.odciobject('SYS','ODCISTATS2'));
      9    RETURN odciconst.success;
    10   END;
    11   STATIC FUNCTION ODCIStatsSelectivity
    12   (pred                   IN  SYS.ODCIPredInfo,
    13    sel                    OUT NUMBER,
    14    args                   IN  SYS.ODCIArgDescList,
    15    strt                   IN  NUMBER,
    16    stop                   IN  NUMBER,
    17    --i_col1                 in  NUMBER,
    18    env                    IN  SYS.ODCIEnv)
    19   RETURN NUMBER
    20   IS
    21   BEGIN
    22     sel := 90;
    23     RETURN odciconst.success;
    24   END;
    25  -- STATIC FUNCTION ODCIStatsFunctionCost (
    26  --  func                   IN  SYS.ODCIPredInfo,
    27  --  cost                   OUT SYS.ODCICost,
    28  --  args                   IN  SYS.ODCIArgDescList,
    29  --  i_col1                 in  NUMBER,
    30  --  env                    IN  SYS.ODCIEnv
    31  -- ) RETURN NUMBER
    32  -- IS
    33  -- BEGIN
    34  --  cost := sys.ODCICost(10000,5,0,0);
    35  --  RETURN odciconst.success;
    36  -- END;
    37  END;
    38  /
    Type body created.
    SQL> But this approach is not happy - perhaps not liking the function with no arguments?
    SQL> disassociate statistics from functions f1;
    Statistics disassociated.
    SQL> ASSOCIATE STATISTICS WITH FUNCTIONS f1 USING test_stats_ot;
    Statistics associated.
    SQL> select count(*) from t1 where col1 >= f1;
    select count(*) from t1 where col1 >= f1
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-06550: line 12, column 22:
    PLS-00103: Encountered the symbol "ÀÄ" when expecting one of the following:
    ) , * & = - + < / > at in is mod remainder not rem =>
    <an exponent (**)> <> or != or ~= >= <= <> and or like like2
    like4 likec between || multiset member submultiset
    SQL> So, back to F2 again (uncommenting argument i_col1 in ODCIStatsSelectivity):
    SQL> disassociate statistics from functions f1;
    Statistics disassociated.
    SQL> disassociate statistics from functions f2;
    Statistics disassociated.
    SQL> ASSOCIATE STATISTICS WITH FUNCTIONS f2 USING test_stats_ot;
    Statistics associated.
    SQL> select count(*) from t1 where col1 >= f2(col1);
      COUNT(*)
        100000
    SQL> select * from table(dbms_xplan.display_cursor);
    PLAN_TABLE_OUTPUT
    SQL_ID  2wxw32wadgc1v, child number 0
    select count(*) from t1 where col1 >= f2(col1)
    Plan hash value: 3724264953
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT   |      |       |       |   139 (100)|          |
    |   1 |  SORT AGGREGATE    |      |     1 |     5 |            |          |
    |*  2 |   TABLE ACCESS FULL| T1   |  5000 | 25000 |   139  (62)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - filter("COL1">="F2"("COL1"))
    19 rows selected.
    SQL> Nothing obviously happening.
    You'll note also in my interface type implementation that I commented out a declaration of ODCIStatsFunctionCost.
    This post is probably already too long already so I've skipped some of the detail.
    But when ODCIStatsFunctionCost was used with function F2, I presume I've made a mistake in the implementation because I had an error in the 10053 trace as follows:
      Calling user-defined function cost function...
        predicate: "RIMS"."F2"("T1"."COL1")
      declare
         cost sys.ODCICost := sys.ODCICost(NULL, NULL, NULL, NULL);
         arg0 NUMBER := null;
        begin
          :1 := "RIMS"."TEST_STATS_OT".ODCIStatsFunctionCost(
                         sys.ODCIFuncInfo('RIMS',
                                'F2',
                                NULL,
                                1),
                         cost,
                         sys.ODCIARGDESCLIST(sys.ODCIARGDESC(2, 'T1', 'RIMS', '"COL1"', NULL, NULL, NULL))
                         , arg0,
                         sys.ODCIENV(:5,:6,:7,:8));
          if cost.CPUCost IS NULL then
            :2 := -1.0;
          else
            :2 := cost.CPUCost;
          end if;
          if cost.IOCost IS NULL then
            :3 := -1.0;
          else
            :3 := cost.IOCost;
          end if;
          if cost.NetworkCost IS NULL then
            :4 := -1.0;
          else
            :4 := cost.NetworkCost;
          end if;
          exception
            when others then
              raise;
        end;
    ODCIEnv Bind :5 Value 0
    ODCIEnv Bind :6 Value 0
    ODCIEnv Bind :7 Value 0
    ODCIEnv Bind :8 Value 4
      ORA-6550 received when calling RIMS.TEST_STATS_OT.ODCIStatsFunctionCost -- method ignoredThere was never any such feedback about ODCIStatsSelectivity.
    So, in summary, more questions than answers.
    I'll try to have another look later.

  • Doubt with a Insert query!

    hi friends i have a doubt with a query in sql here is the following code.
    INSERT INTO
                         (SELECT employee_id, last_name,
                                      email, hire_date, job_id, salary,
                                      department_id
                           FROM employees
                          WHERE department_id = 50)
               VALUES (99999, 'Taylor', 'DTAYLOR',
                            TO_DATE('07-JUN-99', 'DD-MON-RR'),
                             'ST_CLERK', 5000, 50);The same insert statement can be achieved with
    INSERT INTO EMPLOYEES (employee_id, last_name,
                                      email, hire_date, job_id, salary,
                                      department_id)
                        VALUES (99999, 'Taylor', 'DTAYLOR',
                            TO_DATE('07-JUN-99', 'DD-MON-RR'),
                             'ST_CLERK', 5000, 50);What advantage does the first query have over the second one.
    Thanks in advance to everyone.
    Regards,
    Manoj

    Those two statements are identical.
    However this one would be different:
    INSERT INTO
      (SELECT employee_id, last_name,
            email, hire_date, job_id, salary,
            department_id
       FROM employees
       WHERE department_id = 50
       with check option )
    VALUES (99999, 'Taylor', 'DTAYLOR', TO_DATE('07-JUN-99', 'DD-MON-RR'), 'ST_CLERK', 5000, 50);The "WITH CHECK OPTION" would guarantee that only employees for department 50 are inserted.
    see also:
    http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_10002.htm#i2066598
    Edited by: Sven W. on Mar 17, 2011 7:22 PM - typo correction

  • Seqment shrink with function based indexes - 10.2.0.3

    I see 10g Rel 2 limiation with function based index while doing segment shrink. Is their a workaround? I tried to drop the function based index before shrink, still shrink is taking several hrs to complete.
    Any help is appreciated.
    Thanks,
    Siva

    Hi,
    Analogy: suppose you have 1 million barrels filled with water near 85% maybe less, now you spilled ...say 40% the total water, maybe you have 400,000 empty barrels or the equivalent (here comes the overhead) you are going to concentrate the water in 600,000 barrels and return the empty ones to the "Oracle Server" store, just to reclaim them gradually until you have the starting 1 million barrel.
    Our advise: keep the objects as they are, both table and index. Oracle will use released space as efficiently as he can, which is (at that level) better than us.
    You're worried about the index space? much better leave it now, that's the structure which may cause the major part of overhead.
    Regards
    Ignacio
    http://oracledisect.blogspot.com

  • Financial statement with Functional Area

    Dear Experts,
    We recently implemented SAP in our company.
    One problem we have is that our Financial statements are just on GL, our Management wants to see the Financial statement break up by departments (Cost centers) & Projects.
    I beleive that this is possible through Functional areas concept, but I don't know completely on how to configure & maintain Functional areas in order to get the Financial statements with Functional area.
    Please guide me a complete configuration step.
    Many Thanks.
    Sunil.

    Thanks Alice, but I partially disagree with your input.
    What is the benefit of maintaining Functional area in the Cost center master data then.
    I have seen some slides of Financial statements with Functional are break up by Cost center categories.
    Please give more idea on this.
    Thanks
    Sunil

  • To update Employee Data with Function module

    Hi
    CRM employee master and HR employee master need to be mapped
    for the labor cost posting function to work.
    In BP transaction (Change in BP role : Employee),
    I could update "Personnel number" and "User Name"
    under Identification Tab
    now I need to do same job with Function module in report program.
    Anybody knows that what Function module should I use ?
    I tryed to do it with Function "CRMXIF_PARTNER_SAVE"
    but I only succesed to update imformations under Adress tab in BP transaction.
    thank you.

    Use FM BAPI_BUPA_CREATE_FROM_DATA.
    Rg,
    Harshit

  • Personal recruitment How to do new measure with function call Update IT4000

    Hi out there and happy new year to forum,
    i want to update to implement a recruitment measure (Transaction PB40). I did it already with batch input, but i guess it's much more comfortable to do with funtion module, bapi or calsses.
    After choosing the measure, the infogroup will be processed. So i guess, i just have to use the corresponding function modules to update the infotypes in a given sequence. is this suggestion right?
    What are these function modules? How to update f.e. IT4000? Does anyone has a coding snippet?
    Is it HR_INFOTYPE_OPERATION? 
    In our Infogroup there are also customer specific infotypes f.e. 9***. Can I use the sap standard function modules for "own implemented" infotypes?
    I also appreciate an abap oo pattern or any similar....
    Best regards,
    T

    Andy Goris wrote:
    But I don't think that it's possible to hire an application completly with function modules (there is no PERNR in the beginning so I would keep the BIM).
    The applicants already exists in system, i just want to implement a measure with exact one click!
    Otherwise there is a BAPI for applicant_create.
    I'm not very expierienced focussing the implementation in pa-recruiting. I'm really looking for a good documentation or anything like that f.e. sap press.
    Andy Goris wrote:
    ... but why would you use the old recruiting database? This is hardly used anymore.
    What are the alternatives to it. (I'm not looking forward to upgrade releases or using wd4a or webgui). we are on ecc 6.0 There is already a lot of z-coding in recruitment. We are also using an self implemented e-recruiting approach
    Edited by: Timo Ehl on Jan 3, 2012 2:30 PM

  • Doubts with working in BI

    Dear Experts,
    I am sure SAP follows the same concepts in BI as just recently i have worked in JasperSoft Talend Open studio.
    But i have some doubts with BI.
    I created a RFC in ABAP. Used that RFC to bring data for a single day as parameter  on to ingres database table .The ingres table is of same schema as of structure output.Finally i find that ingres table is populated after running relevant job.
    Now i thought to work twoards report and that worked as well.But still i have doubts.
    As i am new to BI ,i dont know what advantage i got by doing this breathless activity.
    (1) I would have simply used sap itself to generate report.What was the need to bring to mysql.Load to my server remain same because definitely RFC will be executed nowhere but on server itself.
    (2)If daily i have to run the same job ,obviously i could have done same with sap.Same amount of data will be retrieved with
    same overheads.
    As i said that i am new to BI.Plz explain me about power of BI  and what i am missing to conceptualize ?

    Aditya,
    You can definitely use SAP R/3 to generate these issues - the only issues are :
    SAP R/3 is an OLTP system
    by OLTP system the system is optimized / tuned to be able to do inserts and updates to tables but then the default indices are not tuned for reads ... this might cause report performance issues...
    SAPR/3 is not supposed to hold more than 2 years of data at best ( unless your system is small enough ) whereas a BI system can hold and should hold much more information.
    Getting the master data descriptions for the data you are reporting upon and that too across languages can be a challenge - whereas it can be better handled in a BI system...
    As for extracting large volumes of data you should use the Service API that comes with SAP Bi for better extraction performance ...
    some points why you need a BI system.....

  • How to copy a generic extractor with function module into a new system?

    Dear Gurus,
    i would like to know how i can copy a gneric datasource with function module from one system to the target system.
    Thank you
    Cheers

    Hi Anesh,
    thank you for replying.
    Since the Datasource will have a new new in the new system, i will create a new one.
    Create a generic datasource base on the table is not the problem.
    My problem is how could i copy the FM in the new system?
    If you can help me on that, it will be fine.
    Thanks

  • Queuename cannot be build with function(while creating invoice VF01) IDoc

    Hi all,
    I had a problem while posting an invoice with reference to the delivery document . we had configured partner profile with INVOIC02 and extension for that. and maintained Transfer IDocs immediately. queue processing is enabled . before implementing OSS notes it is working fine. after implementing these notes we are getting update termination message and the invoice document is not getting saved.  the notes are 0001019483 and 0001280898 .
    After implementing notes rule is enabled and in that rule we had given IDOC_QUEUE_SUS_MM. and we had done cofig for that in we85.
    the message is like this.
    Update was terminated
    System ID....   R1Q
    Client.......   100
    User.....   ABOSE
    Transaction..   VF01
    Update key...   4DF9276AC53F16E6E100800082180442
    Generated....   16.06.2011, 12:43:49
    Completed....   16.06.2011, 12:43:50
    Error Info...   B1 519: Queuename cannot be build with function:
    Please helpme out
    Thanks & regards
    sreehari p

    Dear Reddy,
    This may due to two reasons
    1.Itemcategory settings
    2.Copy control settings at item level between your sales document type and your billing type ZF3.So fallow these steps you can rectify the issue.
    -->You go to the VOV7 transaction then select item category ZAPT TAP then go in to the details of that here you can find the field Billing Relevance maintain this field "B" or "C" if you are doing order related billing.
    -->Go to VTFA transaction click on change icon (Top Left Corner)then select your billing type ZF3 and sales order type then click on the item here you select the itemcategory ZAPT TAP then go in to the details screen here you need to enter the copying requirement routines.
    Standard routine is 002-item/order related in the Copying requirements field.
    Standard routine is 001-Inv.split (sample) in the Data VBRK/VBRP field.
    And also check the Header level copy control settings
    Maintain these settings then try
    I hope it will help you
    Regards,
    Murali.

  • "Replace letters with" function

    How to tell Mail to use "Replace letters with" function of Keyboard/text? All other apps are using this!
    Thanks,
    Matyas

    you can create your own replaceString function;
    i.e.
    http://www.worlddeveloper.org/www/forumtopicview.html?fid=167&categoryId=24&fpn=0

Maybe you are looking for

  • After Latest Mac 10.6.5 Update, Photoshop CS4 Crashes on Startup

    I installed the latest Mac OS X 10.6.5 update this morning, and now Photoshop CS4 won't open -- it crashes on startup.  Please help!  Crash report copied below. Thanks -- Sara Process:         Adobe Photoshop CS4 [344] Path:            /Applications/

  • File to File Scenario - NFS

    Hi, We are busy with a very simple file-to-file scenario using NFS transport protocol. The source directory that I enter was as follows i.e. //xx.xxx.xx.xx/directoryname, but I keep on getting a configuration error on the adapter engine with the foll

  • Can't open CC

    I have uninstalled and reinstalled but the Creative Cloud app will not install continually console error  Mac Yosemite 10.10.1 11/24/14 11:17:47.065 PM Creative Cloud[1510]: objc[1510]: Class HTTPHeader is implemented in both /Applications/Utilities/

  • Opening doc in Internet explorer 8 or 9, results in "?"

    This is been happening. Just configured a new hard drive, windows 7 Ultimate 34 bit, still the same problem. When I click a pdf document, mostly bank statements, I get like a windows info box with a big blue question mark on the side. Usually on the

  • Where do I set the "Time Span: Length of Comp" in an Adobe Media Encoder Preset?

    Since Adobe is removing H.264 from After Effects, I'm trying to get the workflow set up with AME. However, when I send a comp to AME, it doesn't render the whole comp, just the work area. How can I set it up to automatically render the entire comp, l