On Sep 11, 11:13 am, Santana <[email protected]> wrote:
> Hello,
> i need  your help for this situation :
>
> I have a table :"CUSTOMER" with two thousand of records,  the required
> time to retrieve this information with a query is less than 2
> seconds :
> SELECT  * FROM CUSTOMER
>
> But i need get this information through a function that require more
> than 2 MINUTES!!!
>
>   FUNCTION getCUSTOMER( ) RETURN SYS_REFCURSOR AS
>         CUR   SYS_REFCURSOR;
>   BEGIN
>
>    OPEN cur FOR ' SELECT * FROM CUSTOMER ';
>
>    RETURN cur;
>   END;
>
>  There is any database parameter that i need change ?? Any suggestion,
> please ??
>
>  Regards,
>  Santana


You have problems you're not telling us about with reference to how
you're using this function; I do not see the same performance
'problem' you see for 2000 records:

SQL> @customer_ref_cur_ex
SQL> create table customer(
  2          cust_id    number,
  3          cust_name  varchar2(40),
  4          cust_addr1 varchar2(50),
  5          cust_addr2 varchar2(50),
  6          cust_pst_cd varchar2(10),
  7          cust_cntct  varchar2(40),
  8          cust_email  varchar2(80)
  9  );


Table created.


Elapsed: 00:00:00.04
SQL>
SQL> alter table customer
  2  add constraint customer_pk
  3  primary key(cust_id);


Table altered.


Elapsed: 00:00:00.04
SQL>
SQL> begin
  2          for i in 1..2000 loop
  3                  insert into customer
  4                  values (i, 'Sample'||i, i||' Avenue '||i, 'Suite
'||i,
'A'||i||'B', 'Narweegy Sping '||i, 'narweegy'||i||'@sample'||
i||'.com');
  5          end loop;
  6
  7          commit;
  8
  9  end;
 10  /


PL/SQL procedure successfully completed.


Elapsed: 00:00:00.15
SQL>
SQL> set autotrace on
SQL> set timing on
SQL> set linesize 300
SQL>
SQL> select * from customer;


   CUST_ID CUST_NAME
CUST_ADDR1
CUST_ADDR2                                         CUST_PST_C
CUST_CNTCT                               CUST_EMAIL
---------- ----------------------------------------
--------------------------------------------------
-------------------------------------------------- ----------
----------------------------------------
---------------------------------------------------------------------------­-----
       315 Sample315                                315 Avenue
315                                     Suite
315                                          A315B      Narweegy
Sping
315                       [email protected]
       316 Sample316                                316 Avenue
316                                     Suite
316                                          A316B      Narweegy
Sping
316                       [email protected]
       317 Sample317                                317 Avenue
317                                     Suite
317                                          A317B      Narweegy
Sping
317                       [email protected]
       318 Sample318                                318 Avenue
318                                     Suite
318                                          A318B      Narweegy
Sping
318                       [email protected]
       319 Sample319                                319 Avenue
319                                     Suite
319                                          A319B      Narweegy
Sping
319                       [email protected]
...


2000 rows selected.


Elapsed: 00:00:06.39


SQL>
SQL> create or replace FUNCTION getCUSTOMER
  2  RETURN SYS_REFCURSOR AS
  3          cur   SYS_REFCURSOR;
  4    BEGIN
  5
  6
  7     OPEN cur FOR 'SELECT * FROM CUSTOMER';
  8
  9
 10     RETURN cur;
 11    END;
 12  /


Function created.


Elapsed: 00:00:00.03
SQL>
SQL> show errors
No errors.
SQL>
SQL> variable mycur refcursor
SQL>
SQL> begin
  2          select getcustomer
  3          into :mycur
  4          from dual;
  5
  6  end;
  7  /


PL/SQL procedure successfully completed.


Elapsed: 00:00:00.00
SQL>
SQL> print mycur


   CUST_ID CUST_NAME
CUST_ADDR1
CUST_ADDR2                                         CUST_PST_C
CUST_CNTCT                               CUST_EMAIL
---------- ----------------------------------------
--------------------------------------------------
-------------------------------------------------- ----------
----------------------------------------
---------------------------------------------------------------------------­-----
       315 Sample315                                315 Avenue
315                                     Suite
315                                          A315B      Narweegy
Sping
315                       [email protected]
       316 Sample316                                316 Avenue
316                                     Suite
316                                          A316B      Narweegy
Sping
316                       [email protected]
       317 Sample317                                317 Avenue
317                                     Suite
317                                          A317B      Narweegy
Sping
317                       [email protected]
       318 Sample318                                318 Avenue
318                                     Suite
318                                          A318B      Narweegy
Sping
318                       [email protected]
       319 Sample319                                319 Avenue
319                                     Suite
319
...


2000 rows selected.


Elapsed: 00:00:05.60
SQL>


I see no reason this should take 60 times longer to use the function.
You need to explain how, exactly, you're using this function if you
really want assistance.


David Fitzjarrell


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to