全面了解SQL*PLUS工具的一点补充

全面了解SQL*PLUS工具的一点补充

1、  大家都知道在WINDOWS 下,进入SQL*PLUS 有两种方法:

第一种是直接双击带十字架的SQL PLUS图标;

第二种是从命令窗口进入,输入SQLPLUS命令。

但其实调用的是两个不同的应用程序(其实也就是SQL * PLUS 的两个不同版本)。

第一种方法运行的是 sqlplusw.exe 程序(注意当是其它工具带的SQL*PLUS工具时名字可能会有所区别,如:PLUS80W.EXE),而第二种方法运行的是 sqlplus.exe 程序。

但两个应用程序在WINDOWS 下所在的路径是相同的。例如我电脑上的这两个程序所在的路径都是:E:\oracle\product\10.2.0\db_1\BIN

2、  大家都知道SQL*PLUS在启动时会自动运行两个脚本:glogin.sql login.sql

glogin.sql是默认会创建的,也就是说原本就有的,只要没有人为删除的话,就能找到这样一个文件。

WINDOWS下,glogin.sql默认所在路径如:E:\oracle\product\10.2.0\db_1\sqlplus\admin

login.sql文件是要人工手动去创建的。如果没有创建自然SQL*PLUS也自动加载不到这样一个文件。

3、  大家都知道SQL*PLUS在启动时先运行glogin.sql文件,再运行login.sql文件。

但要运行login.sql文件,肯定是先要找到该文件,而SQL*PLUS查找该文件的顺序是:先在当前路径下查找,如找到就运行,运行后终止查找。如没找到再查找有没有SQLPATH环境变量,如有就在该环境变量所对应的路径下查找,如找到就运行,运行后终止查找。如没找到同样终止查找,不再去别的地方查找。如没有SQLPATH环境变量同样终止查找,不再去别的地方查找。而查找glogin.sql只在默认路径下找查,所以一般不移动glogin.sql文件所在的路径。

4、  解释下“当前路径”:

“当前路径”并不指sqlplusw.exe sqlplus.exe 应用程序所在的路径;不同情况(方法)“当前路径”有不同的意义。具体如下:

如果是采用双击带十字架的SQL PLUS图标的方法,进入SQL*PLUS的话,那么当前路径即对应应用程序所在路径。可以通过右击带十字架的图标,然后点击属性查看该路径。

如果是采用在命令窗口输入SQLPLUS命令的方法,进入SQL*PLUS的话,那么当前路径即输入SQLPLUS命令时所在的当前路径。比如:当输入SQLPLUS命令时的提示符为:“CDocuments and Settings\username>”,那么当前路径指的就是“CDocuments and Settings\username”;当输入SQLPLUS命令时的提示符为:“D\>”,那么当前路径指的就是“D\”;

5、  建议采用环境变量SQLPATH的方式指定login.sql所在的路径。当设定好SQLPATH环境变量后,一定要退出命令窗口后(注意是命令窗口,而不是命令窗口下的SQL*PLUS),再进入命令窗口,再调用SQL*PLUS才会生效。 而如果直接把login.sql文件放在当前目录下,则只需要退出命令窗口下的SQL*PLUS后,然后再次调用进入SQL*PLUS即可生效,也就是说不用连命令窗口也退出再进。当采用SQLPATH环境变量的方式指定login.sql所在的路径的方法时,应确保与环境变量SQLPATH所指的路径不相同的当前路径下不再有login.sql。否则运行的是当前路径下的login.sql文件,而不是环境变量SQLPATH所指的路径下的login.sql文件。

6、  测试以上结论可能还会用到的知识点:

WINDOWS命令窗口下,切换路径,举例说明:

1、“CDocuments and Settings\username”切换到C盘,命令:cd c:\

2、“CDocuments and Settings\username”切换到D盘,命令:d:

3、“C\”切换到D盘,命令:d:

附:Thomas Kyte 常用的login.sql文件内容:

   文件内容:

set termout off

define _editor=vi

set serveroutput on size 1000000 format wrapped

column object_name format a30

column segment_name format a30

column file_name format a40

column name format a30

column file_name format a30

column what format a30 word_wrapped

column plan_plus_exp format a100

set trimspool on

set long 5000

set linesize 131

set pagesize 9999

define gname=idle

column global_name new_value gname

select lower(user)||'@'||

substr(global_name , 1 ,decode(dot,0,length(global_name),dot-1) ) global_name

from (select global_name ,instr(global_name,'.') dot

        from global_name );

set sqlprompt '&gname>'

set termout on

语句功能解析:

1set termout off

禁止所运行的脚本中所产生的输出输出到界面上。

2define _editor=vi

将编辑工具(即在SQLPLUS中输入ED命令时弹出的编辑器)设置为VI编辑器。一般在LINUXUNIX下才这样设置。在WINDOW下默认编辑工具为记事本。

3set serveroutput on size 1000000 format wrapped

使界面上能显示出DBMS_OUTPUT.PUT_LINE包所输出的内容,且设置为最大显示范围,且输出内容的回绕方式为按字符(另一种方式为按单词word_wrapped)。

4column object_name format a30

column segment_name format a30

column file_name format a40

column name format a30

column file_name format a30

column what format a30 word_wrapped

column plan_plus_exp format a100

以上为定义列的类型与宽度,并指定列的回绕方式(按字符还是按单词)

5set trimspool on

去掉利用SPOOL命令导出的文档中各行数据后面的空格。因默认情况下利用SPOOL命令导出的文档中各行数据后面会填冲很多空格,从而使得各行长度相等。

6set long 5000

   设置LONG CLOB类型的列在SQLPLUS中能够显示的长度。

默认情况下是只能显示出80个字符。但这个通常太短,所以往往需要人工设置大点。可以通过下面的查询语句进行测试:

select view_name,text from dba_views where view_name = 'USER_TABLES'

7、 set linesize 131

设置行的显示宽度(按字符计算),默认80字符,最大999个字符

超过所设置的宽度时,折行显示。

8、 set pagesize 9999

设置每页显示的行数。注意:标题与横线各占一行。

9define gname=idle

column global_name new_value gname

select lower(user)||'@'||

substr(global_name , 1 ,decode(dot,0,length(global_name),dot-1) ) global_name

from (select global_name ,instr(global_name,'.') dot

        from global_name );

set sqlprompt '&gname>'

1>、以上一组代码的功能是将提示符修改为:用户名+@+全局数据库名

2>define gname=idle 定义一个替代变量gname,并赋初始值为idle

使用define命令定义的变量在下次引用时,SQLPLUS不会提示输入。

(使用def 命令可以查看SQLPLUS环境下所有通过DEFINE 所定义的变量)

3>column global_name new_value gname:将列名与变量名绑定在一起,此后查询该列时,会将该列的值存入被绑定的变量中.

4>select lower(user)||'@'||

substr(global_name , 1 ,decode(dot,0,length(global_name),dot-1) ) global_name

from (select global_name ,instr(global_name,'.') dot

        from global_name );

查询全局数据库名,并构造出:用户名+@+全局数据库名 格式的结果。

5>set sqlprompt '&gname>' 

   设置提示符。可以分别运行语句:set sqlprompt test ; set sqlprompt test> ;

   看下效果。

10set termout on

允许所运行的脚本中所产生的输出输出到界面上。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10595277/viewspace-673698/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10595277/viewspace-673698/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值