Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / System Packages
 

Dump query with dbms_sql

SQL>  CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,   2                    ENAME VARCHAR2(10),   3                    JOB VARCHAR2(9),   4                    MGR NUMBER(4),   5                    HIREDATE DATE,   6                    SAL NUMBER(7, 2),   7                    COMM NUMBER(7, 2),   8                    DEPTNO NUMBER(2)); Table created. SQL> SQL> INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), 800, NULL, 20); 1 row created. SQL> INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600, 300, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250, 500, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('2-APR-1981',  'DD-MON-YYYY'), 2975, NULL, 20); 1 row created. SQL> INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10); 1 row created. SQL> INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20); 1 row created. SQL> INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10); 1 row created. SQL> INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500, 0, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20); 1 row created. SQL> INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30); 1 row created. SQL> INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20); 1 row created. SQL> INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10); 1 row created. SQL> SQL> set echo on SQL> SQL> create or replace procedure  dump_query( p_query in varchar2 )   2  is   3      l_columnValue   varchar2(4000);   4      l_status        integer;   5      l_colCnt        number default 0;   6      l_cnt           number default 0;   7      l_line          long;   8   9      l_descTbl       dbms_sql.desc_tab;  10      l_theCursor     integer default dbms_sql.open_cursor;  11  begin  12      dbms_sql.parse(  l_theCursor,  p_query, dbms_sql.native );  13      dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );  14      for i in 1 .. l_colCnt  15      loop  16          dbms_sql.define_column( l_theCursor, i, l_columnValue, 4000 );  17       end loop;  18      l_status := dbms_sql.execute(l_theCursor);  19      while ( dbms_sql.fetch_rows(l_theCursor) > 0 )  20      loop  21          l_cnt := l_cnt+1;  22          l_line := l_cnt;  23          for i in 1 .. l_colCnt loop  24              dbms_sql.column_value( l_theCursor, i, l_columnValue );  25              l_line := l_line || ',' || l_columnValue;  26          end loop;  27          dbms_output.put_line( l_line );  28      end loop;  29      dbms_sql.close_cursor(l_theCursor);  30  exception  31      when others then  32          dbms_sql.close_cursor( l_theCursor );  33          raise;  34  end dump_query;  35  / Procedure created. SQL> SQL> set serveroutput on SQL> exec dump_query( 'select rowid, empno, ename from emp' ); 1,AAAFGQAABAAAKZKAAA,7369,SMITH 2,AAAFGQAABAAAKZKAAB,7499,ALLEN 3,AAAFGQAABAAAKZKAAC,7521,WARD 4,AAAFGQAABAAAKZKAAD,7566,JONES 5,AAAFGQAABAAAKZKAAE,7654,MARTIN 6,AAAFGQAABAAAKZKAAF,7698,BLAKE 7,AAAFGQAABAAAKZKAAG,7782,CLARK 8,AAAFGQAABAAAKZKAAH,7788,SCOTT 9,AAAFGQAABAAAKZKAAI,7839,KING 10,AAAFGQAABAAAKZKAAJ,7844,TURNER 11,AAAFGQAABAAAKZKAAK,7876,ADAMS 12,AAAFGQAABAAAKZKAAL,7900,JAMES 13,AAAFGQAABAAAKZKAAM,7902,FORD 14,AAAFGQAABAAAKZKAAN,7934,MILLER PL/SQL procedure successfully completed. SQL> SQL> drop table emp; Table dropped. SQL>