在sqlplus全部輸出clob欄位的內容

hxl發表於2009-04-04
在sqlplus全部輸出clob欄位的內容[@more@]

在sqlplus全部輸出clob欄位的內容
建立表
create table tp_clob
(
test clob;
)
;
使用工具pl/sql developer中寫入如下內容
create or replace function fn_test(v_table in varchar)
return number
as
v_count number;
v_sql varchar2(100);
begin
v_sql:= 'select count(*) from '||v_table;
execute immediate v_sql into v_count;
return v_count;
end;

預設的設定在sqlplus中查詢的時候只能輸出部分內容:
SQL>select test from tp_clob;
create or replace function fn_test(v_table in varchar)
return number
as
v_count number;

透過設定引數set long 100000可以輸出clob欄位的全部內容
SQL>set long 100000;
SQL>select test from tp_clob;
TEST
--------------------------------------------

create or replace function fn_test(v_table in varchar)
return number
as
v_count number;
v_sql varchar2(100);
begin
v_sql:= 'select count(*) from '||v_table;
execute immediate v_sql into v_count;
return v_count;
end;

有關SQLPLUS環境的設定命令如下:
  軟體環境:
  1、Windows NT4.0+ORACLE 8.0.4
  2、ORACLE安裝路徑為:C:ORANT
  實現方法:
  show和set命令是兩條用於維護SQL*Plus系統變數的命令
  SQL> show all --檢視所有68個系統變數值
  SQL> show user --顯示當前連線使用者
  SQL> show error
  --顯示錯誤
  SQL> set heading off --禁止輸出列標題,預設值為ON
  SQL> set feedback off --禁止顯示最後一行的計數反饋資訊,預設值為"對6個或更多的記錄,回送ON"
  SQL> set timing on --預設為OFF,設定查詢耗時,可用來估計SQL語句的執行時間,測試效能
  SQL> set sqlprompt "SQL> " --設定預設提示符,預設值就是"SQL> "
  SQL> set linesize 1000 --設定螢幕顯示行寬,預設100
  SQL> set autocommit ON --設定是否自動提交,預設為OFF
  SQL> set pause on --預設為OFF,設定暫停,會使螢幕顯示停止,等待按下ENTER鍵,再顯示下一頁
  SQL> set arraysize 1 --預設為15
  SQL> set long 1000 --預設為80
  說明:
  long值預設為80,設定1000是為了顯示更多的內容,因為很多資料字典檢視中用到了long資料型別,如:
  SQL> desc user_views
  列名 可空值否 型別
  ------------------------------- -------- ----
  VIEW_NAME NOT NULL VARCHAR2(30)
  TEXT_LENGTH NUMBER
  TEXT LONG
  SQL> define a = '''20000101 12:01:01''' --定義區域性變數,如果想用一個類似在各種顯示中所包括的回車那樣的常量,
  --可以用define命令來設定
  SQL> select &a from dual;
  原值 1: select &a from dual
  新值 1: select '20000101 12:01:01' from dual
  '2000010112:01:01
  -----------------
  20000101 12:01:01
  問題提出:
  1、使用者需要對資料庫使用者下的每一張表都執行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的
  實現方法:
  SQL> set heading off --禁止輸出列標題
  SQL> set feedback off --禁止顯示最後一行的計數反饋資訊
  列出當前使用者下所有同義詞的定義,可用來測試同義詞的真實存在性
  select 'desc '||tname from tab where tabtype='SYNONYM';
  查詢當前使用者下所有表的記錄數
  select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
  把所有符合條件的表的select許可權授予為public
  select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
  刪除使用者下各種物件
  select 'drop '||tabtype||' '||tname from tab;
  刪除符合條件使用者
  select 'drop user '||username||' cascade;' from all_users where user_id>25;
  快速編譯所有檢視
  ----當在把資料庫倒入到新的伺服器上後(資料庫重建),需要將檢視重新編譯一遍,
  ----因為該表空間檢視到其它表空間的表的連線會出現問題,可以利用PL/SQL的語言特性,快速編譯。
  SQL> SPOOL ON.SQL
  SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
  SQL> SPOOL OFF
  然後執行ON.SQL即可。
  SQL> @ON.SQL
  當然,授權和建立同義詞也可以快速進行,如:
  SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 使用者名稱;' FROM TAB;
  SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 使用者名稱.'||TNAME||';' FROM TAB;
  SQL*PLUS常用命令列表
  軟體環境:
  1、Windows 98 第二版
  2、Oracle資料庫版本為:Personal Oracle7 Release 7.3.4.0.0
  3、Oracle安裝路徑為:C:ORAWIN95
  命令列表:
  假設當前執行命令為:select * from tab;
  (a)ppend
  新增文字到緩衝區當前行尾
  a order by tname
  結果:select * from tab order by tname;
  (注:a後面跟2個空格)
  (c)hange/old/new 在當前行用新的文字替換舊的文字
  c/*/tname
  結果:select tname from tab;
  (c)hange/text
  從當前行刪除文字
  c/tab
  結果:select tname from ;
  del
  刪除當前行
  del n
  刪除第n行
  (i)nput 文字
  在當前行之後新增一行
  (l)ist
  顯示緩衝區中所有行
 (l)ist n
  顯示緩衝區中第 n 行
  (l)ist m n
  顯示緩衝區中 m 到 n 行
  run
  執行當前緩衝區的命令
  /
  執行當前緩衝區的命令
  r
  執行當前緩衝區的命令
  @檔名
  執行調入記憶體的sql檔案,如:
  SQL> edit s
  如果當前目錄下不存在s.sql檔案,則系統自動生成s.sql檔案,
  在其中輸入“select * from tab;”,存檔退出。
  SQL> @s
  系統會自動查詢當前使用者下的所有表、檢視、同義詞。
  @@檔名
  在.sql檔案中呼叫令一個.sql檔案時使用
  save 檔名
  將緩衝區的命令以檔案方式存檔,預設副檔名為.sql
  get 檔名
  調入存檔的sql檔案
  start 檔名
  執行調入記憶體的sql檔案
  spool 檔名
  把這之後的各種操作及執行結果“假離線”即存檔到磁碟檔案上,預設副檔名為.lst
  spool
  顯示當前的“假離線”狀態
  spool off
  停止輸出
  例:
  SQL> spool a
  SQL> spool
  正假離線到 A.LST
  SQL> spool off
  SQL> spool
  當前無假離線
  exit
  退出SQL*PLUS
  desc 表名
  顯示錶的結構
  show user
  顯示當前連線使用者
  show error
  顯示錯誤
  show all
  顯示所有68個系統變數值
  edit
  開啟預設編輯器,Windows系統中預設是notepad.exe,把緩衝區中最後一條SQL語句調入afiedt.buf檔案中進行編輯
  edit 檔名
  把當前目錄中指定的.sql檔案調入編輯器進行編輯
  clear screen

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/77311/viewspace-1019981/,如需轉載,請註明出處,否則將追究法律責任。

相關文章