0

I have a function that returns a refcursor for a given query.

I call the function like this. Although this is a simple query my actual query is more dynamic with other parameters for where clause.

select myfunction('select * from employees') as f  from dual;

and it gives me the output

F                   
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DAT JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------------- ------------------------- ------------------------- -------------------- -------- ---------- ---------- -------------- ---------- -------------
        198 Donald               OConnell                  DOCONNEL                  650.507.9833         20070621 SH_CLERK         2600                       124            50
        199 Douglas              Grant                     DGRANT                    650.507.9844         20080113 SH_CLERK         2600                       124            50
        200 Jennifer             Whalen                    JWHALEN                   515.123.4444         20030917 AD_ASST          4400                       101            10
        201 Michael              Hartstein                 MHARTSTE                  515.123.5555         20040217 MK_MAN          13000                       100            20
        202 Pat                  Fay                       PFAY                      603.123.6666         20050817 MK_REP           6000                       201            20
        203 Susan                Mavris                    SMAVRIS                   515.123.7777         20020607 HR_REP           6500                       101            40
        204 Hermann              Baer                      HBAER                     515.123.8888         20020607 PR_REP          10000                       101            70

I don't want these lines at the top and only want the cursor's output.

CURSOR STATEMENT : 1

How do I stop sqlplus or SQL developer from displaying it? what commands should I use?

0

2 Answers 2

3

That looks like a function that returns a ref cursor; is it?

SQL> create or replace function f_my (par_select in varchar2)
  2  return sys_refcursor
  3  is
  4    l_rc sys_refcursor;
  5  begin
  6    open l_rc for par_select;
  7    return l_rc;
  8  end;
  9  /

Function created.

Here's what you currently have:

SQL> select f_my('select * From dept') as f from dual;

F
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

So, how to get rid of those CURSOR STATEMENT : 1 lines? It is SQLPlus that's displaying them (some other tool might not do it). But, as you use SQLPlus, here's how:

SQL> var v_rc refcursor
SQL> exec :v_rc := f_my('select * from dept')

PL/SQL procedure successfully completed.

SQL> print v_rc

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL>
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks. I added an answer to include SET FEEDBACK OFF to eliminate "PL/SQL procedure successfully completed." too
0

Thanks to Littlefoot's answer. I am able to extract only the rows from the table using the following lines in my script.

SET FEEDBACK OFF
SET PAGES 0
VARIABLE c REFCURSOR
spool /mypath/somefile.csv
EXEC :c := myfunction('select * from employees')
PRINT c

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.