sql脚本中出现SQL> SQL> 以及 列名重命名不显示问题-阿里云开发者社区

开发者社区> 技术小胖子> 正文

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
 
现在我们要对这个输出进行修改,包括:
 
①分别设置输出列的长度为2、10、6、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的设置则要考虑屏幕和打印机的大小了。

 



     本文转自 珏石头 51CTO博客,原文链接:http://blog.51cto.com/gavinshaw/771760,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
shell动态脚本和pl/sql动态脚本的比较
最近项目有一个需求,需要在多个数据库的schema上跑一些脚本。希望dba能够提供一个脚本,能够根据需求在环境中执行指定的脚本。 乍一听,没什么技术难点,为了更明白的说明问题,我举个例子。
653 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4620 0
Visual Studio 2010 起始页中 不显示最近使用的项目问题,解决办法
最近新装了vs2010,发现打开vs2010 后 起始页面中的最近使用的栏目中 并未显示最近加载的项目 解决办法如下: 运行 regedit 打开下面的键值: HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policie...
478 0
ORACLE SQL脚本能否修改字段名称?
在看到标题时,你先想想:在ORACLE中能否修改一个表的某个字段名呢?如果能的话,你是否还记得SQL脚本如何写的呢,呵呵,写这个的目的是因为在论坛上看见许多信誓旦旦的说ORACLE中不能修改字段名称,只能先删除、后添加字段或是其它方法来处理。
648 0
【OH】常用数据字典脚本说明 SQL Scripts
来源于 http://docs.oracle.com/cd/E11882_01/server.112/e40402/scripts.htm  ,主要对一些数据字典脚本进行说明。
878 0
用Sql生成数据插入Sql脚本
CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @columndata varchar(1000) declare @sql varcha...
489 0
14350
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载