sql腳本中出現SQL> SQL> 以及 列名重命名不顯示問題

 QL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7    8    9   10   11  20120131 消費                  1583   48627.56
20120131 消費撤銷                33      74.32
20120131 卡啓動記錄             614          0
出現SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    
只須要在sql腳本開始的時候添加 sqlplus -s user/pass >>!
data
!
可解決
sqlplus 中執行結果
 
時間     交易類型            交易數   交易金額
-------- --------------- ---------- ----------
20120131 消費                  1583   48627.56
20120131 消費撤銷                33      74.32
20120131 卡啓動記錄             614          0
 
 
sql命令以下
SQL> select  t.inst_date as "時間",cast(d.dict_name as char(15)) as "交易類型", count(1) as "交易數", sum(t.amt_trans/100) as "交易金額"
  2    from tbl_txn_his t , tb_ent_dict_info d 
  3   where t.inst_date >= 20120131
  4     and t.inst_date <= 20120131
  5     and t.txn_num in (1105, 3105, 7000, 7010)
  6     and t.revsal_flag = '0'
  7     and t.cancel_flag = '0'
  8     and t.resp_code ='00'
  9     and t.txn_num = d.dict_id 
 10     and d.dict_type = 999
 11     group by d.dict_name   , t.inst_date 
 12  ;
 
 
在不顯示列名,目前的辦法是這樣
select '時間    交易類型            交易數量        金額 ' from dual;
union all;
select t.inst_date as "時間",cast(d.dict_name as char(15)) as "交易類型", count(1) as "交易數", sum(t.amt_trans/100) as "交易金額"
  from tbl_txn_his t , tb_ent_dict_info d 
 where t.inst_date >= 20120131
   and t.inst_date <= 20120131
   and t.txn_num in (1105, 3105, 7000, 7010)
   and t.revsal_flag = '0'
   and t.cancel_flag = '0'
   and t.resp_code ='00'
   and t.txn_num = d.dict_id 
   and d.dict_type = 999
   group by d.dict_name   , t.inst_date;
ps:附上Oracle SQL*PLUS命令應用 設置顯示列格式的相關命令
設置列格式的相關命令
 1. 改變列的顯示長度 
COLUMN column_name FOR[MAT] format 
 
備註:  
  注意該命令將保持一直生效直至輸入了一個新的格式值或者退出了SQL*PLUS, 其中字段類型能夠爲Char, Varchar2, varchar。
 
若是SQL*PLUS的WARP變量的值被設置爲"開"(默認值), 那麼字段的內容將會在format命令規定的長度處折行, 不然的話超過規定長度的後續字符將會被截取。
 
  若是你有多個相同顯示屬性的列須要設置,那麼使用column 字段名 like 你想要複製顯示屬性的字段heading 字段名。注意若是不加上後面heading 字段名那麼複製的時候連字段名都會複製過去,顯然不適合通常要求。
 
   2. 格式化NUMBER類型列的顯示 
SQL> COLUMN SAL FORMAT $99,990 
 
3. 顯示列值時,若是列值爲NULL值,用text值代替NULL值 
COMM NUL[L] text 
SQL>COL COMM NUL[L] text 
 
4. 設置一個列的迴繞方式 
COLUMN WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] 
 
備註:此命令常和format合用,當列值過長時可使用該命令格式話輸出, wrapped根據字符長度控制, word_wrapped根據單詞控制, truncated則直接截取等長字符。
 
  5. 清空當前全部列的設置,恢復成默認格式
  CLEAR COLUMNS
 
下面咱們來看一下這些命令的綜合應用:
SQL> desc testtable;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 NAME                                               VARCHAR2(20)
 REMARK                                             VARCHAR2(50)
 SALARY                                             NUMBER
 
SQL> select * from testtable;
 
        ID NAME
---------- ----------------------------------------
REMARK
--------------------------------------------------------------------------------
    SALARY
----------
         1 paul
 
     99999
 
如今咱們要對這個輸出進行修改,包括:
 
①分別設置輸出列的長度爲二、十、六、8
②分別設置輸出列的列名居中
③格式化Salary列的值爲$999,999
④將Remark列的空值替換爲字符串User description
⑤設置Remark列的迴繞方式爲按單詞迴繞
 
下面咱們來看看這個SQL*PLUS命令應該如何寫:
SQL> column ID justify center
SQL> column Name justify center format a10
SQL> column Remark justify center format a6 NULL 'User description' word_wrapped
SQL> column salary justify right format $999,999
SQL> select * from testtable;
 
    ID        NAME    REMARK    SALARY
---------- ---------- ------ ---------
         1 paul       User     $99,999
                      descri
                      ption
 
看看其中的SQL語句:
Column Remark justify center format a6 NULL 'User description' word_wrapped。
 
該句設置了:列名居中顯示、列的長度爲6個字符、空值用'User description'代替、按單詞迴繞(因此是在User處折行,而不是在User d出折行,雖然列的長度能夠爲6)
 
 
設置頁面及行格式的相關命令
1.設置一行能夠容納的字符數 
SQL> SET LIN[ESIZE] {80|n} 
若是一行的輸出內容大於設置的一行可容納的字符數,則折行顯示。 
 
2.設置一頁有多少行數 
SQL> SET PAGES[IZE] {24|n} 
若是設爲0,則全部的輸出內容爲一頁而且不顯示列標題 
 
   3.設置頁與頁之間的分隔 
SQL> SET NEWP[AGE] {1|n|NONE} 
當set newpage 0 時,會在每頁的開頭有一個小的黑方框。 
當set newpage n 時,會在頁和頁之間隔着n個空行。 
當set newpage none 時,會在頁和頁之間沒有任何間隔。 
 
備註:以上三個命令常常合用, 首先設置每行顯示的最大長度, 再設置每頁有多少行, 最後設置頁間距. 若是要獲取較好格式的話能夠配合Column format命令格式化每一個字段的長度. 
 
下面咱們來實地查看一下上述命令在結果輸出中的應用
SQL> select * from testtable;
 
        ID NAME       REMARK
---------- ---------- --------------------------------------------------
REG_DATE       SALARY
---------- ----------
         1 paul lin
07-6月 -08       5500
 
         2 bob lin    common user
06-6月 -08       6500
 
 
SQL> 
 
下面咱們要作的就是:
 
①調整頁面最大顯示長度爲200
②設置每頁只顯示一條記錄
③每頁之間間隔兩個空
SQL> set linesize 200 pagesize 1 newpage 2;
SQL> 
SQL> /
 
 
         1 paul lin                                                      07-6月 -08       5500
 
 
         2 bob lin    common user                                        06-6月 -08       6500
 
SQL> 
 
能夠看到頁面的輸出並不讓人滿意(標題和虛線都沒有了),如今咱們使用一種使人比較滿意的設置:
SQL> set linesize 200 pagesize 999 newpage;
SQL> 
SQL> 
SQL> /
        ID NAME       REMARK                                             REG_DATE       SALARY
---------- ---------- -------------------------------------------------- ---------- ----------
         1 paul lin                                                      07-6月 -08            5500
         2 bob lin    common user                                 06-6月 -08            6500
 
SQL> 
 
實際上該命令的最後設置newpage會在每頁的前面加上一個黑色的小方框(在這裏不能顯示),以提示這是新一頁的開始,假如你不想進行任何的提示那麼只要設置newpage爲none就能夠了(你所看到的輸出和如今的如出一轍)。
 
至於linesize的設置則要考慮屏幕和打印機的大小了。
相關文章
相關標籤/搜索