[20210428]改進pr.sql指令碼.txt
[20210428]改進pr.sql指令碼.txt
--//tanel poder提供一個指令碼pr.sql,用來實現顯示資訊的縱向顯示。例子:
SCOTT@book> select * from dept where deptno=10
2 @ pr
Pivoting output using Tom Kyte's printtab....
==============================
DEPTNO : 10
DNAME : ACCOUNTING
LOC : NEW YORK
PL/SQL procedure successfully completed.
--//第一次看到這樣的使用是上網站,不知道對方如何實現的。後來對方給我一個指令碼,好像是windows
--//版本我修改一下,適合linux使用。我這才想起來tanel poder的指令碼包裡面有。
$ cat prxx.sql
.
set termout off
def _pr_tmpfile=/tmp/pr.out
store set &_pr_tmpfile.set replace
set termout on
set serverout on size 1000000 termout off echo off
save &_pr_tmpfile replace
set termout on
0 c clob := q'\
0 declare
999999 \';;
999999 l_theCursor integer default dbms_sql.open_cursor;;
999999 l_columnValue varchar2(4000);;
999999 l_status integer;;
999999 l_descTbl dbms_sql.desc_tab;;
999999 l_colCnt number;;
999999 begin
999999 dbms_sql.parse( l_theCursor, c, dbms_sql.native );;
999999 dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );;
999999 for i in 1 .. l_colCnt loop
999999 dbms_sql.define_column( l_theCursor, i,
999999 l_columnValue, 4000 );;
999999 end loop;;
999999 l_status := dbms_sql.execute(l_theCursor);;
999999 while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
999999 dbms_output.put_line( '==============================' );;
999999 for i in 1 .. l_colCnt loop
999999 dbms_sql.column_value( l_theCursor, i,
999999 l_columnValue );;
999999 dbms_output.put_line
999999 ( rpad( l_descTbl(i).col_name,
999999 30 ) || ': ' || l_columnValue );;
999999 end loop;;
999999 end loop;;
999999 exception
999999 when others then
999999 dbms_output.put_line(dbms_utility.format_error_backtrace);;
999999 raise;;
999999 end;;
/
set termout off
@&_pr_tmpfile.set
get &_pr_tmpfile nolist
host rm &_pr_tmpfile
set termout on
--//今天我自己再改一下在每個欄位前面加上序號的功能:
$ cat prxxn.sql
.
set termout off
def _pr_tmpfile=/tmp/pr.out
store set &_pr_tmpfile.set replace
set termout on
set serverout on FORMAT WRAPPED size 1000000 termout off echo off
save &_pr_tmpfile replace
set termout on
0 c clob := q'\
0 declare
999999 \';;
999999 l_theCursor integer default dbms_sql.open_cursor;;
999999 l_columnValue varchar2(4000);;
999999 l_status integer;;
999999 l_descTbl dbms_sql.desc_tab;;
999999 l_colCnt number;;
999999 begin
999999 dbms_sql.parse( l_theCursor, c, dbms_sql.native );;
999999 dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );;
999999 for i in 1 .. l_colCnt loop
999999 dbms_sql.define_column( l_theCursor, i,
999999 l_columnValue, 4000 );;
999999 end loop;;
999999 l_status := dbms_sql.execute(l_theCursor);;
999999 while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
999999 dbms_output.put_line( '==================================' );;
999999 for i in 1 .. l_colCnt loop
999999 dbms_sql.column_value( l_theCursor, i,
999999 l_columnValue );;
999999 dbms_output.put_line
999999 (lpad(i,3)||' '|| rpad( l_descTbl(i).col_name,
999999 30 ) || ': ' || l_columnValue );;
999999 end loop;;
999999 end loop;;
999999 exception
999999 when others then
999999 dbms_output.put_line(dbms_utility.format_error_backtrace);;
999999 raise;;
999999 end;;
/
set termout off
@&_pr_tmpfile.set
get &_pr_tmpfile nolist
host rm &_pr_tmpfile
set termout on
--//注意第一行的點可不是多餘的,不要刪除。
--//測試如下:
SCOTT@book> select * from emp where rownum=1
2 @ prxxn
==================================
1 EMPNO : 7369
2 ENAME : SMITH
3 JOB : CLERK
4 MGR : 7902
5 HIREDATE : 1980-12-17 00:00:00
6 SAL : 800
7 COMM :
8 DEPTNO : 20
PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2770316/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20211126]完善tpt pr.sql指令碼.txtSQL指令碼
- [20221126]tpt pr.sql指令碼執行問題.txtSQL指令碼
- 如何改進你的指令碼程式指令碼
- 一個清理指令碼的改進思路指令碼
- shell的引數和指令碼流程改進指令碼
- [20210428]資料庫連線加密.txt資料庫加密
- 【主機】傳送郵件指令碼的改進指令碼
- MSSQL表資料匯出成Insert指令碼<改進版>SQL指令碼
- 改進uwsgi啟動指令碼,使其支援多個獨立配置檔案指令碼
- [20170628]完善ooerr指令碼.txt指令碼
- outline操作指令碼_老版本.txt指令碼
- [20190716]十進位制轉換其他進位制指令碼.txt指令碼
- [20210506]完善tix指令碼.txt指令碼
- 【docker】進入docker的指令碼Docker指令碼
- 指令碼::Vim進階索引[3]指令碼索引
- NDK 知識梳理(2) 使用 CMake 進行 NDK 開發之如何編寫 CMakeLists txt 指令碼指令碼
- [20190510]快速建立執行指令碼.txt指令碼
- [20190416]exclusive latch測試指令碼.txt指令碼
- [20210407]完善ti.sql指令碼.txtSQL指令碼
- [20210623]完善清除aud指令碼.txt指令碼
- [20170515]檢查資料庫scn指令碼.txt資料庫指令碼
- [20160501]檢視包引數指令碼.txt指令碼
- 重構:仔細檢視 改進程式碼
- Bash指令碼15分鐘進階教程指令碼
- 進行統計的 awk 指令碼(轉)指令碼
- sql指令,增,刪,查,改SQL
- [20201202]完善sosi指令碼.txt指令碼
- [20171219]指令碼執行的安全性.txt指令碼
- 使用指令碼進行 SAP Spartacus 安裝工作指令碼
- Bash指令碼15分鐘進階指導指令碼
- 使用Windows指令碼進行邏輯備份Windows指令碼
- 程式碼維護:改進程式碼的一些方法 (轉)
- iOS逆向(7)-LLDB,自制LLDB指令碼,竄改微信紅包金額iOSLLDB指令碼
- [20190423]oradebug peek測試指令碼.txt指令碼
- [20220510]完善tpt expandz.sql指令碼.txtSQL指令碼
- [20211230]完善sql_id指令碼.txtSQL指令碼
- [20221010]完善descz.sql指令碼.txtSQL指令碼
- [20221101]完善descz.sql指令碼.txtSQL指令碼