dynamic_sql
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| dynamic_sql [2018/12/08 12:49] – created 0.0.0.0 | dynamic_sql [2019/01/30 11:32] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Dynamic_SQL | + | * [[http:// |
| + | * [[http:// | ||
| + | ==== Nice example from a question on AskTom using dynamic sql passing an SQL statement as a parameter | ||
| + | Pretty print format a row from a table\\ | ||
| + | * Ref: [[https:// | ||
| + | < | ||
| + | set serverout on size 999999 | ||
| + | set verify off | ||
| + | declare | ||
| + | p_query varchar2(32767) := q' | ||
| - | | + | l_theCursor |
| - | | + | l_columnValue |
| - | =====Nice example from a question on AskTom using dynamic sql passing an SQL statement | + | l_status |
| - | Pretty print format a row from a table<br /> | + | l_descTbl |
| - | * Ref: [[https://asktom.oracle.com/ | + | l_colCnt |
| - | < | + | n number |
| + | procedure p(msg varchar2) is | ||
| + | l varchar2(4000) := msg; | ||
| + | begin | ||
| + | while length(l) > 0 loop | ||
| + | dbms_output.put_line(substr(l, | ||
| + | l := substr(l, | ||
| + | end loop; | ||
| + | end; | ||
| + | begin | ||
| + | execute immediate | ||
| + | 'alter session set nls_date_format=//dd-mon-yyyy hh24:mi:ss// '; | ||
| + | |||
| + | dbms_sql.parse( | ||
| + | dbms_sql.describe_columns( l_theCursor, | ||
| + | |||
| + | for i in 1 .. l_colCnt loop | ||
| + | dbms_sql.define_column(l_theCursor, | ||
| + | end loop; | ||
| + | |||
| + | l_status | ||
| + | |||
| + | while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop | ||
| + | for i in 1 .. l_colCnt loop | ||
| + | dbms_sql.column_value( l_theCursor, | ||
| + | | ||
| + | || ': ' || | ||
| + | l_columnValue ); | ||
| + | end loop; | ||
| + | dbms_output.put_line( ' | ||
| + | n := n + 1; | ||
| + | end loop; | ||
| + | if n = 0 then | ||
| + | dbms_output.put_line( chr(10)||' | ||
| + | end if; | ||
| + | end; | ||
| + | / | ||
| + | |||
| + | set verify on | ||
| + | |||
| + | SQL> @pt " | ||
| + | EMPNO : 7369 | ||
| + | ENAME : SMITH | ||
| + | JOB : CLERK | ||
| + | MGR : 7902 | ||
| + | HIREDATE | ||
| + | SAL : 800 | ||
| + | COMM : | ||
| + | DEPTNO | ||
| + | ----------------- | ||
| + | |||
| + | PL/SQL procedure successfully completed. | ||
| + | |||
| + | SQL> @pt " | ||
| + | DEPTNO | ||
| + | DNAME : ACCOUNTING | ||
| + | LOC : NEW YORK | ||
| + | ----------------- | ||
| + | |||
| + | PL/SQL procedure successfully completed. | ||
| + | |||
| + | SQL> | ||
| + | </ | ||
| + | |||
| + | ==== Drop database links by creating | ||
| + | <code> | ||
| + | | ||
| + | \ | ||
| + | %s\ | ||
| + | " "*** Removing the database links from db_sizing ***" | ||
| + | cat<< | ||
| + | grant create database link to db_sizing; | ||
| + | grant select on sys.dba_db_links to db_sizing; | ||
| + | set pages 0 newpa none lines 1000 feed off serveroutput on | ||
| + | create or replace procedure db_sizing.drop_db_link as | ||
| + | l_db_link varchar2(4000); | ||
| + | l_stmt | ||
| + | begin | ||
| + | dbms_output.enable(null); | ||
| + | select db_link | ||
| + | into | ||
| + | from | ||
| + | where owner = ' | ||
| + | and db_link like ' | ||
| + | select 'drop database link '||l_db_link into l_stmt from dual; | ||
| + | dbms_output.put_line(l_stmt); | ||
| + | execute immediate l_stmt; | ||
| + | exception | ||
| + | when no_data_found then | ||
| + | dbms_output.put_line(' | ||
| + | end drop_db_link; | ||
| + | / | ||
| + | exec db_sizing.drop_db_link; | ||
| + | revoke create database link from db_sizing; | ||
| + | drop procedure db_sizing.drop_db_link; | ||
| + | EOSQL | ||
| + | </ | ||
| - | =====Drop database links by creating a procedure as the user then running the procedure===== | ||
| - | < | ||
dynamic_sql.1544273360.txt.gz · Last modified: 2018/12/08 12:49 by 0.0.0.0
