我的sqlplus数据显示格式很不方便:n字段名称显示为n行,数据也是如此,并且查询结果每3条数据为一段。如何设置其格式,使其显示结果类似sqlserver的查询分析器那样的格式,象一个数据表的格式。例如:
----------------
id
name
age
-----------------
1
zhao
28
2
qian
40
3
sun
30
...全文
261813打赏收藏
sqlplus数据显示格式问题?
我的sqlplus数据显示格式很不方便:n字段名称显示为n行,数据也是如此,并且查询结果每3条数据为一段。如何设置其格式,使其显示结果类似sqlserver的查询分析器那样的格式,象一个数据表的格式。例如: ---------------- id name age ----------------- 1 zhao 28 2 qian 40 3 sun 30
以下内容添加在:$ORACLE_HOME/bin/login.sql中:
REM ---------------------BEGIN------------------------------
SET HEADING OFF
PROMPT 欢迎使用SQL*PLUS!
SELECT '你现在以' || USER || '的身份连接到' || GLOBAL_NAME || '数据库。' FROM
global_name;
PROMPT 如果你不是gototop,请你立即退出本程序!!
set echo off
set termout off
define X=NotConnected
define Y=GlobalName
Column username New_Value X
Column dbname New_Value Y
select user username,global_name dbname from global_name;
SET TERMOUT ON TIME ON PAGESIZE 24 LINESIZE 100 HEADING ON
SET SQLPROMPT '&X@&Y> '
REM ---------------------END--------------------------------
以下是新的输出界面:
------------------------------------------------------------
phoenix1> sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on Wed Oct 9 14:55:02 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Enter password:
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning and Parallel Server options
JServer Release 8.1.7.4.0 - Production
欢迎使用SQL*PLUS!
你现在以SYS的身份连接到ORA8数据库。
如果你不是gototop,请你立即退出本程序!!
14:55:08 SYS@ORA8>
------------------------------------------------------------
当然在8.1.5之后所有的信息都可以从dual中取得,如上面的username和dbname等:
Select SYS_CONTEXT('USERENV','SESSION_USER') Usr From Dual;
Select SYS_CONTEXT('USERENV','DB_NAME') DBNAME From Dual;
二 SQLPLUS的人机交互命令
在SQLPLUS里可以接受用户的输入,最常用的命令有:
(1) ACCEPT
接受整行的数据。
语法:ACC[EPT] variable [NUM[BER]|CHAR|DATE] [FOR[MAT] format]
[DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]
举例说明:
角本1.sql,查出工资大于输入金额的雇员。
SET FEEDBACK OFF
SET PAUSE OFF
ACCEPT sal NUMBER PROMPT 'Please input salary(weekly): '
select employee_id,last_name,first_name,salary from employee
where salary>&sal;
在SQLPLUS 中运行
SQL> @c:\1.sql
Please input salary(weekly): 1000
old 2: where salary>&sal
new 2: where salary> 1000
EMPLOYEE_ID LAST_NAME FIRST_NAME SALARY
----------------- ------------------- ----------------------------- ----------
7499 ALLEN KEVIN 1600
7505 DOYLE JEAN 2850
7506 DENNIS LYNN 2750
7507 BAKER LESLIE 2200
7521 WARD CYNTHIA 1250
7555 PETERS DANIEL 1250
7557 SHAW KAREN 1250
7560 DUNCAN SARAH 1250
7564 LANGE GREGORY 1250
7566 JONES TERRY 2975
7569 ALBERTS CHRIS 3000
注:
① ACCEPT接受一行的输入,并且把输入的数据根据指定按照指定的类型存放到变量(如不存在,自动创建一个)中。
② FOMRAT用于制定输入的数据格式,如数字可以指定’999.99’,字符可以指定长度’A10’
③ 如果类型是CHAR,长度最大240。
(3) LIST或;
列出缓冲区内的内容,list可以列出某行的内容,而;则是所有的。
举例:
SQL> ;
1 select * from tab WHERE tabtype='VIEW'
2* ORDER BY tname
SQL> l 2
2* ORDER BY tname
(4) INPUT
增加一行内容
举例:
SQL> i ORDER BY tname
SQL> l
1 select * from tab WHERE tabtype='VIEW'
2* ORDER BY tname
(5) CHANGE
把当前行的第一个艘索到的内容替换新的内容,
语法:C[HANGE] sepchar old [sepchar [new[sepchar]]]
举例:
SQL> l
1* select * from employee where salary>1000 and salary<2000
SQL> c/salary/sal
1* select * from employee where sal>1000 and salary<2000
注意,当缓冲区有两行的时候,用C替换的是最后一行里的内容。
(6) Edit
在指定的文本编辑器里,编辑缓冲区的内容。Windows上,缺省是NOTEPAD。
(7) SPOOL
把输出结果,指定到一个文件中,有点像DOS命令下的>
SPO[OL] [file_name[.ext] | OFF | OUT]
SQL> spool c:\1.txt
SQL> select * from tab;
SQL> spool off
安装 podded(阿朱) 和 welyngj(平平淡淡)的指示操作了,运行
SQL>column id for 999,999
SQL>column name for a10
SQL>column age for 999
没有提示信息,但是
select id,name,age from students
得到的结果还是原来那样。