Problem with temporary table refresh

Hi,
I running a process before validation on a page to populate a temporary table when I click a button.
On the following page I've built a shuttle on the temporary table. Not the most elegant solution, but the shuttle LOV box wouldn't process the oracle text commands in the SQL.
I'm not getting any error, but I have an unusual problem
It takes two passes for the data to be replaced. i.e I enter 'ABCD' in the filter and it returns data with 'ABCD'
If I return to the page and change the filter to 'EFGH' I still get 'ABCD'. I return to the page and click the button again and I get 'EFGH' results
I've checked the data in the temporay table and that is updating in line with the problem.
I've looked at the debug and that seems fine (i.e I can see the changed filter value), I've tried moving the truncate to a different process, that didn't help.
I've run it in SQL developer and it seems to work fine.
I've included the code below, but I can't see a problem with it.
Can anybody help?
begin
EXECUTE IMMEDIATE('TRUNCATE TABLE temp_cat');
commit;
if length(:P26_ADD_FILTER) > 0 then
insert into temp_cat (core_cat_id, core_cat_code, core_cat_desc)
select core_cat_id,core_cat_code,core_cat_desc from core_cat where CONTAINS (core_cat_desc, '
<query>
<textquery lang="ENGLISH" grammar="CONTEXT">&P26_ADD_FILTER.
<progression>
<seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq>
<seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq>
</progression>
</textquery>
<score datatype="INTEGER" algorithm="COUNT"/>
</query>')>0 and core_cat_id not in (select pipe_project_cat.core_cat_id from pipe_project_cat where txtpamref = :p26_pamref);
else
insert into temp_cat (core_cat_id, core_cat_code, core_cat_desc)
select core_cat_id,core_cat_code,core_cat_desc from core_cat where
core_cat_id not in (select pipe_project_cat.core_cat_id from pipe_project_cat where txtpamref = :p26_pamref);
end if;
end;

Hi,
Apex does not work well with temporary tables as you cannot guarantee which session from the pool will be used to serve each page.
In your case, it looks like the second page is using temporary data from the wrong session.
Have you considered using Apex Collections instead?
Luis

Similar Messages

  • Problem with Temporary Table (Urgent)

    Hi all,
    Yesterday also i was facing da problem of gettin records from a global temporary table .. Today also i made a procedure in which i have to create a temporary table according to da select query ..and when i m printing da count(*) from tht table .. result is 0 tht means records r not inserting ..
    But if i m creatin it as a normal Create Table i m gettin da result..
    I want the table shud b created n records fetch by the query shud b inserted.. I have checked query is fetchin records..
    Sorri but still da same proble .. pls help me out
    PROCEDURE prn_trnASRGetStudentCertInfo(strIntakeSession          IN sisStudent.IntakeSession          %TYPE,      
                             strProgramCode          IN sisStudent.ProgramCode          %TYPE)
         AS
         intCount Number(3);
         SQLSTR     varchar2(100);     
         BEGIN
              EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmpStudentCert
                        AS
                        SELECT     sisEnrolment.EnrolmentID     As EnrolmentID,     
                                  sisEnrolment.StudentID          As StudentID,
                                  sisEnrolment.ProgramCode     As PrgCode,
                                  sisCourseEnrolled.CourseCode     As CourseCode,
                                  sisCourseEnrolled.Status     As Status,
                                  exmCCResult.Status           As exmStatus     
                        FROM          sisStudent
                        INNER JOIN sisEnrolment
                        ON
                             sisStudent.StudentID = sisEnrolment.StudentID
                        INNER JOIN sisCourseEnrolled
                        ON
                             sisEnrolment.EnrolmentID = sisCourseEnrolled.EnrolmentID
                        INNER JOIN exmCCResult
                        ON
                             sisCourseEnrolled.CourseCode =      exmCCResult.CourseCode
                        AND
                             sisCourseEnrolled.ProgramCode = exmCCResult.ProgramCode     
                        WHERE
                             UPPER(TRIM(sisStudent.IntakeSession)) = UPPER(TRIM('''||strIntakeSession||'''))
                        AND
                             UPPER(TRIM(sisStudent.ProgramCode)) = UPPER(TRIM('''||strProgramCode||'''))
                        AND
                             UPPER(TRIM(sisCourseEnrolled.Status)) <> TRIM(''D'')
                        AND
                             UPPER(TRIM(exmCCResult.Status)) = TRIM(''P'')';
              COMMIT;     
              SQLSTR := 'SELECT COUNT(*) FROM TMPSTUDENTCERT';
              EXECUTE IMMEDIATE SQLSTR INTO INTCOUNT;
              dbms_OUTPUT.PUT_LINE(INTCOUNT);
         END prn_trnASRGetStudentCertInfo;

    Hi there,
    You have had quite a few replies from the previous post and you should have learnt from that.
    Creating a procedure to do what you are trying to do is logically not sound.
    Firstly, a Global temporary table IS a database object which continous to exist like a normal table except that its data is not permanent. Therefore, there is no point in creating it dynamically in a procedure.
    Secondly, as I pointed out earlier, the data is temporary and it is gone once you issue a commit. A DDL like 'Create Table' will implicitly issue a commit after it has created the table - therefore all the data inserted as part of the Create Table statement will never be there.
    Hence, the subsequent SELECT COUNT(*) from the table will always return 0.
    Regards,
    John

  • Problem with temporary table in stored procedure

    Hi,
    I have to execute a stored procedure in java , where the stored procedure has refcursor as out parameter and within the procedure the refcursor out parameter is populated from a temporary table
    when iam trying to get the resultset in my program iam getting the oracle error: ora-08103 object is no longer in use.
    I think this is becos the temporary table object is not available to my program
    can any one please help me

    I don't understand this part.
    Your procedure has "argSchemaName" as input parameter. Why do you have hardcoded owner name here in the cursor?
    >>
    CURSOR csrEligTables IS
    SELECT
    object_name
    FROM
    all_objects
    WHERE
    Owner = 'HI0XXX001'
    AND
    >>
    The anonymous block that you are running also has same owner name.

  • Problems with a table in PDF`S footer

    Dear sirs,
    We are having problems when trying to run a PDF with Adobe LiveCycle Designer tool.
    We are working with a PDF which is composed of a header, the main body and a footer. We have created a table (table1) at the footer and
    another one at the main body (table2). This last table (table2) may overflow therefore it will genarate two pages for our PDF.
    On both pages appear the header and the footer correctly but in the last page it does not write the data from the table included in the footer (table1).
    We have no problems with the table included in the main body
    In the attachments, I send you the screenshots of both pages in which I have marked in red the part where we have error.
    May you help us to solve our problem?
    Thanks in advance your help.
    Edited by: emgaitan on Mar 16, 2010 2:18 PM

    Wardell,
    Check the data in RSA3 for the extractor that you use to bring data .
    You must be using the data source 0CO_OM_CCA_09. Check the data and reconcile and you will get it.
    Let me know if you need anything else.
    Thanks
    Ravi Thothadri
    [email protected]

  • I am getting problem with internal table & work area declaration.

    I am working with 'makt' table ..with the table makt i need to work with styles attributes ..so i declared like this
    TYPES : BEGIN OF ty_makt,
             matnr TYPE makt-matnr,
             spras TYPE makt-spras,
             maktx TYPE makt-maktx,
             maktg TYPE makt-maktg,
             celltab TYPE lvc_t_styl,
           END OF ty_makt.
    DATA : i_makt TYPE TABLE OF ty_makt.
    DATA : wa_makt TYPE ty_makt .
        But end of program i need to update dbtable "makt"...i am getting problem with internal table & work area declaration.
    i think makt table fields mapping and internal table/work area mapping is not correct. so please help me to get out from this.

    Hi Nagasankar,
    TYPES : BEGIN OF TY_MATNR,
                  MATNR TYPE MAKT-MATNR,
                  SPRAS TYPE MAKT-SPRAS,
                  MAKTX TYPE MAKT-MAKTX,
                  MAKTX TYPE MAKT-MAKTG,
                  CELLTAB TYPE LVC_T_STYL,  " Its Working perfectly fine..
                 END OF TY_MAKT.
    DATA: IT_MAKT TYPE STANDARD TABLE OF TY_MAKT,
              WA_MAKT TYPE TY_MAKT.
    Its working perfectly fine. if still you are facing any issue post your complete code.
    Thanks,
    Sandeep

  • Problem with a table control

    Hi gurus,
    I´ve a problem with a table control. It has 3 columns which one is a checkbox.
    I can fill all fields but in the moment I mark the checkbox this line must be unwritable. How can I do it?
    Thanks for all
    Dani

    Assign a function code to the checkbox column....
    so when u check / uncheck any entry, PAI + PBO will be triggered....
    In the PBO during the loop of table control, check the checkbox field value. if it is 'X', make the row readonly
    by looping at screen and setting screen-input = 0 for rest of the columns.
    like ...
    LOOP AT tc_itab
           WITH CONTROL tc_test
           CURSOR tc_test-current_line.
       module set_row_readonly. " loop at screen and set input = '0' if checkbox is checked...
    ENDLOOP.

  • Problem with maintain table views SM30 Transaction

    Hello All,
    i have a problem with the table maintenance view SM30, it doesn't permit me to modify the rows in the table.
    we have added a field into the table and when i tried to change the table view from menu: Utilities ==> table maintenance generator==> change the system propose me a message that the screen 0001 will be deleted and recreated...but the system has deleted the screen and doesn't recreate it...in somewehere on internet we find that we should use the transaction SE55 menu:
    Environment==> modification ==> Maintenance screen ==> button Layout which open the tool Screen Painter and from that we have created our screen with 4 fields of our table...our result that the screen is created and i can see it from the SM30 transaction but i can't insert rows in the table...when i try to go to maintain table: menu: Utilities ==> Table maintenance generator to try if i can modify something the system give me a message: "set the compare flag dialog ZIV_DP_PLCHAR_LA"
    the ZIV_DP_PLCHAR_LA is the name of my table...
    can you give me some advices please how should i do to fix this problem to insert rows in table throughout the transaction
    SM30 "maintain table views: initial screen"
    if i want to delete the screen from the SE55 transaction to recreate it newly what should i do to take care about some options
    to have a new screen?
    thanks for all
    Bilal

    Hi
    First delete the old table maintainence generator.
    Now Recreate the screen and your table is good to go..
    These error messages come when we add new fields and different version of the table maintainence generator in database.

  • Problem with Pivot Table with Graph: Line Bar Combo

    Hello people!
    I have a problem with pivot table and line bar combo (all in the same view (pivot table))
    I have some measures and one dimension in my report.
    --------------measure1---measure2---measure3
    Dim A.1
    Dim A.2
    Dim A.3
    If I choose my graph line bar combo automatically choose "line" measure 3 (last measure in "Show Controls"). How can I do if I want my measure1 for line and I don't want modify my pivot table?
    Thank you very much!

    Ok, I'll explain my problem again. In my pivot table I add graph vision and I want in the same view (Pivot table). My graph is "Line Bar Combo" and I don't know how but the last of my measures belongs to right AXIS, if I change order of my measures I can see in my graph the measure that I want in my right axis BUT also it changes the order of my pivot table.
    This is my problem. I think that I can do that with different views but I lose my selector view to view graphic and my pivot table at the same time.

  • Problem with truncate table in procedure ora -00054

    hi do anybody know where is mistake ???
    the procedure has problem with truncate table
    ora - 00054: resource busy and acquire with NOWAIT specified
    ora - 06512 at "POVAPSYS.HMAN_P_REFRESH", line 6
    ora - 06512 at "POVAPSYS.POVAPSYS", line 6
    ora - 06512 at line 1
    this is my procedure....
    AS
    BEGIN
    execute immediate 'TRUNCATE TABLE hman_t_max';
    INSERT INTO hman_t_max SELECT * FROM hman_v_max;
    COMMIT;
    END;

    2.MAKE SURE THAT OTHER THAN YOU ANYBODY IS TRYING TO
    COMPILE AND RUN THE PROCEDUREShould he make sure that anybody is running the procedure?
    3.MAKE SURE THAT ANY PARALLEL QUERY IS RUNNING IN THE
    SERVER SIDE,THATS KEEPS THE RESOURCE BUSYShould he make sure any parallel query is running in the server side to keep the resource busy?
    Gita,
    I COULDN'T RESIST HAVING ONE SUGGESTION FOR YOU. Please look at the impact of your English in the reply before posting. Check if that sends reverse message!
    Cheers
    Sarma.

  • Problems with partition tables

    Hi all,
    I've got some problems with partition tables. The script at the bottom run but when I wanna insert some values it returns me an error
    (ORA-06550: line 1, column 30: PL/SQL: ORA-06552: PL/SQL: Compilation unit analysis terminated
    ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed
    ORA-06550: line 1, column 7: PL/SQL: SQL Statement ignored)
    and I can't understand why!
    There's something incorrect in the script or not?
    Please help me
    Thanks in advance
    Steve
    CREATE TABLE TW_E_CUSTOMER_UNIFIED
    ID_CUSTOMER_UNIFIED VARCHAR2 (27) NOT NULL ,
    START_VALIDITY_DATE DATE NOT NULL ,
    END_VALIDITY_DATE DATE ,
    CUSTOMER_STATUS VARCHAR2 (255)
    PARTITION BY RANGE (START_VALIDITY_DATE)
    SUBPARTITION BY LIST (END_VALIDITY_DATE)
    PARTITION M200909 VALUES LESS THAN (TO_DATE('20091001','YYYYMMDD'))
    (SUBPARTITION M200909_N VALUES (NULL), SUBPARTITION M200909_NN VALUES (DEFAULT)),
    PARTITION M200910 VALUES LESS THAN (TO_DATE('20091101','YYYYMMDD'))
    (SUBPARTITION M200910_N VALUES (NULL), SUBPARTITION M200910_NN VALUES (DEFAULT)),
    PARTITION M200911 VALUES LESS THAN (TO_DATE('20091201','YYYYMMDD'))
    (SUBPARTITION M200911_N VALUES (NULL), SUBPARTITION M200911_NN VALUES (DEFAULT)),
    PARTITION M200912 VALUES LESS THAN (TO_DATE('20100101','YYYYMMDD'))
    (SUBPARTITION M200912_N VALUES (NULL), SUBPARTITION M200912_NN VALUES (DEFAULT)),
    PARTITION M201001 VALUES LESS THAN (TO_DATE('20100201','YYYYMMDD'))
    (SUBPARTITION M201001_N VALUES (NULL), SUBPARTITION M201001_NN VALUES (DEFAULT)),
    PARTITION M201002 VALUES LESS THAN (TO_DATE('20100301','YYYYMMDD'))
    (SUBPARTITION M201002_N VALUES (NULL), SUBPARTITION M201002_NN VALUES (DEFAULT)),
    PARTITION M210001 VALUES LESS THAN (MAXVALUE))
    (SUBPARTITION M210001_N VALUES (NULL), SUBPARTITION M210001_NN VALUES (DEFAULT))
    ;

    Hi Hoek,
    the DB version is 10.2 (italian version, then SET is correct).
    ...there's something strange: now I can INSERT rows but I can't update them!
    I'm using this command string:
    UPDATE TW_E_CUSTOMER_UNIFIED SET END_VALIDITY_DATE = TO_DATE('09-SET-09', 'DD-MON-RR') WHERE
    id_customer_unified = '123' and start_validity_date = TO_DATE('09-SET-09', 'DD-MON-RR');
    And this is the error:
    Error SQL: ORA-14402: updating partition key column would cause a partition change
    14402. 00000 - "updating partition key column would cause a partition change"
    *Cause:    An UPDATE statement attempted to change the value of a partition
    key column causing migration of the row to another partition
    *Action:   Do not attempt to update a partition key column or make sure that
    the new partition key is within the range containing the old
    partition key.
    I think that is impossible to use a PARTITION/SUBPARTITION like that: in fact the update of "END_VALIDITY_DATE" cause a partition change.
    Do u agree or it's possible an update on a field that implies a partition change?
    Regards Steve

  • I have a problem with a chart refreshing after its bound data provider changes.

    I have a problem with a chart refreshing after its bound data
    provider changes. After the subsetHighLowData.refresh() is called I
    would expect the chart to redraw, but it still looks the same. I
    even inspected the debugger to see if the slice had taken place and
    it had.
    Any ideas coding friends?

    "nikos101" <[email protected]> wrote in
    message
    news:gib6aa$prr$[email protected]..
    >I have a problem with a chart refreshing after its bound
    data provider
    >changes.
    > After the subsetHighLowData.refresh() is called I would
    expect the chart
    > to
    > redraw, but it still looks the same. I even inspected
    the debugger to see
    > if
    > the slice had taken place and it had.
    >
    > Any ideas coding friends?
    >
    > subsetHighLowData.source =
    >
    highLowData.source.slice(slider.values[0],slider.values[1]);
    Just use the ArrayCollection's removeItemAt, and it should
    handle the event
    dispatching for you.
    HTH;
    Amy

  • Problem with the table control BDC in FV60 transaction

    Hi All,
    I got the problem with the table control in FV60 transaction.
    This is working for 900 line items.After 900 line items it is giving the problem like it is 1000th line item.You can post only 999 line items.
    I know we can post only 999 line items,but in my file only 920 line items.
    Please give me solution,if anybody come across this situation.
    Thanks & regards,
    rakesh.

    Hello Rakesh ,
    your file may have only 920 line items , but based on those line items, SAP may create few more  new lines ( based on the clearing recon accounts , inter company transaction ...etc )...
    regards
    Prabhu

  • Temporary table refresh problem

    Hi,
    I running a process before validation on a page to populate a temporary table when I click a button.
    On the following page I've built a shuttle on the temporary table. Not the most elegant solution, but the shuttle LOV box wouldn't process the oracle text commands in the SQL.
    I'm not getting any error, but I have an unusual problem
    It takes two passes for the data to be replaced. i.e I enter 'ABCD' in the filter and it returns data with 'ABCD'
    If I return to the page and change the filter to 'EFGH' I still get 'ABCD'. I return to the page and click the button again and I get 'EFGH' results
    I've checked the data in the temporay table and that is updating in line with the problem.
    I've looked at the debug and that seems fine (i.e I can see the changed filter value), I've tried moving the truncate to a different process, that didn't help.
    I've run it in SQL developer and it seems to work fine.
    I've included the code below, but I can't see a problem with it.
    Can anybody help?
    begin
    EXECUTE IMMEDIATE('TRUNCATE TABLE temp_cat');
    commit;
    if length(:P26_ADD_FILTER) > 0 then
    insert into temp_cat (core_cat_id, core_cat_code, core_cat_desc)
    select core_cat_id,core_cat_code,core_cat_desc from core_cat where CONTAINS (core_cat_desc, '
    <query>
    <textquery lang="ENGLISH" grammar="CONTEXT">&P26_ADD_FILTER.
    <progression>
    <seq><rewrite>transform((TOKENS, "{", "}", " "))</rewrite></seq>
    <seq><rewrite>transform((TOKENS, "{", "}", " ; "))</rewrite></seq>
    <seq><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></seq>
    <seq><rewrite>transform((TOKENS, "{", "}", "ACCUM"))</rewrite></seq>
    </progression>
    </textquery>
    <score datatype="INTEGER" algorithm="COUNT"/>
    </query>')>0 and core_cat_id not in (select pipe_project_cat.core_cat_id from pipe_project_cat where txtpamref = :p26_pamref);
    else
    insert into temp_cat (core_cat_id, core_cat_code, core_cat_desc)
    select core_cat_id,core_cat_code,core_cat_desc from core_cat where
    core_cat_id not in (select pipe_project_cat.core_cat_id from pipe_project_cat where txtpamref = :p26_pamref);
    end if;
    end;
    Edited by: jlynch on 24-Mar-2009 10:59
    Edited by: jlynch on 24-Mar-2009 11:00

    Sorry Please igonre - wrong forum!

  • Problem with a Table Control Scroll Down.

    Hi,
    I´m working with a table control in which I select one of the many lines the table contains and I move it into a structure, I delete the data of the table control internal table and I move the selected line back into the internal table to show only that record. My problem is the following:
    Whenever I have to scroll down to select a line, the selected line doesn´t appear afterwards. I believe that it´s because the scroll bar disappears and keeps on showing the line where the record I selected used to be and because the selected record is added in the fist line of the TC.
    Is there any way of avoiding the disappearrance of the vertical scroll bar? Or how can I show the record added in the first line if the TC only displays the position where the selected record used to be?
    This is the logic I use to show the single record.
      READ TABLE TI_ASIGLOT WITH KEY PUSH = 'X'.
      IF SY-SUBRC = 0.
        MOVE-CORRESPONDING TI_ASIGLOT TO ST_ASIG.
        CLEAR TI_ASIGLOT.
        REFRESH TI_ASIGLOT.
        MOVE-CORRESPONDING ST_ASIG TO TI_ASIGLOT.
        ST_ASIG-CPEND = ST_ASIG-GAMNG.
        MOVE ST_ASIG-CPEND TO TI_ASIGLOT-CPEND.
        APPEND TI_ASIGLOT.
    Thank´s and regards.
    Lucila

    Well, I´m going to anwser my own question. The problem was that in my TC the top field value was the line number of the record I've selected. So the only thing I had to do to fix it was to asign 1 to the field TC-top_line inside the form where I select the record.
      READ TABLE TI_ASIGLOT WITH KEY PUSH = 'X'.
      IF SY-SUBRC = 0.
        MOVE-CORRESPONDING TI_ASIGLOT TO ST_ASIG.
        CLEAR TI_ASIGLOT.
        REFRESH TI_ASIGLOT.
        MOVE-CORRESPONDING ST_ASIG TO TI_ASIGLOT.
        ST_ASIG-CPEND = ST_ASIG-GAMNG.
        MOVE ST_ASIG-CPEND TO TI_ASIGLOT-CPEND.
        APPEND TI_ASIGLOT.
        W_INI = 1.
      ELSE.
        MESSAGE I889(100) WITH TEXT-T07.
        EXIT.
      ENDIF.
    z_result-top_line = 1.
    (z_result is my TC )
    Best regards,
    Lucila

  • Performance issue with temporary table

    Hello oracle community,
    Oracle 11.1
    I have a problem with a global temp table (IMPO.REPCUSTOMERSLUCK24). I insert about 600.000 records into the table and doing some UPDATE statements on the table and at the end a MERGE statemtent to fill another table. I think the problem is, that the optimizier dont know how many records are in the temp table (Cardinality 1), but I cannot use DBMS_STATS.GATHER_TABLE_STATS to analyze the temp table (will lose the records if I do). Maybe I could analyze it with the "preserve on commit" option, but would like to avoid that. here is the
    Plan
    UPDATE STATEMENT ALL_ROWSCost: 1 Bytes: 1.171 Cardinality: 1                                              
         15 UPDATE IMPO.REPCUSTOMERSLUCK24                                         
              14 FILTER                                    
                   2 TABLE ACCESS BY INDEX ROWID TABLE (TEMP) IMPO.REPCUSTOMERSLUCK24 Cost: 1 Bytes: 1.171 Cardinality: 1                               
                        1 INDEX RANGE SCAN INDEX IMPO.FK_1883_REPCUSTOMERSLUCK24 Cost: 1 Cardinality: 1                          
                   13 FILTER                               
                        12 SORT GROUP BY NOSORT Cost: 0 Bytes: 2.212 Cardinality: 1                          
                             11 NESTED LOOPS                     
                                  9 NESTED LOOPS Cost: 0 Bytes: 2.212 Cardinality: 1                
                                       7 NESTED LOOPS Cost: 0 Bytes: 1.685 Cardinality: 1           
                                            4 TABLE ACCESS BY INDEX ROWID TABLE (TEMP) IMPO.REPCONTRACTSLUCK24 Cost: 0 Bytes: 1.158 Cardinality: 1      
                                                 3 INDEX FULL SCAN INDEX IMPO.FK_1875_REPCONTRACTSLUCK24 Cost: 0 Cardinality: 1
                                            6 TABLE ACCESS BY INDEX ROWID TABLE CRM2.MEDIACODE Cost: 0 Bytes: 527 Cardinality: 1      
                                                 5 INDEX UNIQUE SCAN INDEX (UNIQUE) CRM2.AK_1970_MEDIACODE Cost: 0 Cardinality: 1
                                       8 INDEX UNIQUE SCAN INDEX (UNIQUE) CRM2.PK_1955_PARTNER Cost: 0 Cardinality: 1           
                                  10 TABLE ACCESS BY INDEX ROWID TABLE CRM2.PARTNER Cost: 0 Bytes: 527 Cardinality: 1                
    any suggestions to my problem ?
    Ikrischer

    hi,
    dynamic sampling is read only a part of the table to make an estimatation (generally count the number of rows, or get an average (if the sample is 'large' enough' for the result to be reliable) etc.
    So in you case you could evaluate the number of row like this (the explain plans show you that the estimated cost is propotional to the size of the sample read (either expressed in # of rows or block)).
    SQL*Plus: Release 10.2.0.2.0 - Production on Thu Jun 17 15:32:43 2010
    Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining options
    SQL> CREATE GLOBAL TEMPORARY TABLE XTEST
      2  (
      3    NUM1  NUMBER                                  NOT NULL
      4  )
      5  ON COMMIT PRESERVE ROWS
      6  NOCACHE
      7  /
    Table created.
    SQL> INSERT INTO xtest
      2     SELECT     ROWNUM
      3     FROM       DUAL
      4     CONNECT BY ROWNUM <= 100000;
    100000 rows created.
    SQL> commit;
    Commit complete.
    SQL> EXEC dbms_stats.gather_table_stats(ownname=>user,tabname=>'XTEST');
    PL/SQL procedure successfully completed.
    SQL> EXPLAIN PLAN SET STATEMENT_ID = 'st1' FOR SELECT COUNT(*)*10 FROM xtest SAMPLE(10);
    Explained.
    SQL> EXPLAIN PLAN SET STATEMENT_ID = 'st2' FOR SELECT COUNT(*)*1.1 FROM xtest SAMPLE(90);
    Explained.
    SQL> set linesize 120;
    SQL> SELECT PLAN_TABLE_OUTPUT FROM   TABLE(DBMS_XPLAN.DISPLAY(NULL,'st1','TYPICAL'));
    PLAN_TABLE_OUTPUT
    Plan hash value: 2221487120
    | Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT     |       |     1 |     4 |    31  (26)| 00:00:01 |
    |   1 |  SORT AGGREGATE      |       |     1 |     4 |            |          |
    |   2 |   TABLE ACCESS SAMPLE| XTEST | 10077 | 40308 |    31  (26)| 00:00:01 |
    9 rows selected.
    SQL> SELECT PLAN_TABLE_OUTPUT FROM   TABLE(DBMS_XPLAN.DISPLAY(NULL,'st2','TYPICAL'));
    PLAN_TABLE_OUTPUT
    Plan hash value: 2221487120
    | Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT     |       |     1 |     4 |    32  (29)| 00:00:01 |
    |   1 |  SORT AGGREGATE      |       |     1 |     4 |            |          |
    |   2 |   TABLE ACCESS SAMPLE| XTEST | 90693 |   354K|    32  (29)| 00:00:01 |
    9 rows selected.
    SQL> Note the difference of rows/bytes in both samples, but be carrefull because the explain plan only gives you an estimation ...
    REM: If you sample by blocks, you'll get less 'IO' (physical or not) (select count(*)1.5 from mytable sample block (50) is costless thans elect count(*)1.5 from mytable sample (50)) ...

Maybe you are looking for