`
zhangziyangup
  • 浏览: 1187049 次
文章分类
社区版块
存档分类
最新评论

如何个性化设置自己的sql*plus环境

 
阅读更多

sql*plus简单,强大和无处不在。用sql*plus主要做什么呢?

1)autotrace

2)编程

在sql*plus创建存储过程的“最佳实践”应该是这样的:

create or replace program-type
as
your code
end;
/
show err


sql*plus会自动运行glogin.sql,该脚本包含全局默认设置。我们可按需自定义自己的sql*plus环境。

1)、首先在系统的环境设置中定义一个环境变量SQLPATH,把你自己的环境设置脚本login.sql和connect.sql
分别放在SQLPATH目录下。

2)、定义一个login.sql脚本,此脚本是SQL*PLUS打开的时候自动执行的脚本。

3)、定义一个脚本connect.sql,此脚本是在身份切换时,调用的脚本。

在实现这login.sql这个脚本,我们需要先掌握些基本的sql*plus知识。

友情提醒:命令太多不必记住。
a]help index
b]help 命令
这两步合起来,友善的sql*plus就会告诉你了。

1)执行一个sql脚本
@
@@:执行嵌套脚本。说明嵌套脚本和宿主在同一个目录下。sql*plus只会在当前目录(sql*plus登入的目录就是当前目录)下找执行文件,两个@就是告诉他,一个@所在的目录就是当前目录。
练习:
在$ORACLE_HOME/dbs下有脚本think.sql和sub_think.sql。
think.sql的内容是:@@sub_think.sql
则我们可以这样执行:
@$ORACLE_HOME/dbs/think.sql

@@告诉sql*plus,$ORACLE_HOME/dbs为当前目录。
2)对当前的输入进行编辑
edit
通常我们说的DML,DDL,DCL等都是sql*plus语句,他们执行完会被保存在sql buffer的内存区域,并且只能保存一条最近执行的sql语句。
3)重新运行在sql buffer中的语句
/
4)将显示的内容输出到指定文件
spool filename
/*你在sql*plus中所做的任何事*/
spool off
然后你就可以到file所在路径查看。
5)col命令
a] 改变缺省的列标题
COL 默认列标题 HEADING 自定义列标题

SQL> select first_change# from v$log;

FIRST_CHANGE#
-------------
       680280
       638906
       659033

SQL> col first_change# heading think
SQL> /   

     think
----------
    680280
    638906
    659033

SQL> col first_change# heading "go into current's scn"
SQL> /

go into current's scn
---------------------
               680280
               638906
               659033
SQL> col first_change# heading "fisrt_change#|go into current"
SQL> /

  fisrt_change#
go into current
---------------
         680280
         638906
         659033

b] 改变列的显示长度
col 字段名 for a多少
这里有个问题,我们需要注意。在sql*plus中,列的显示总是从最左边开始。而且,字符值左对齐;数值右对齐。
下面的例子可以说明。

SQL> select ename,job,deptno from scott.emp where rownum=1;

ENAME      JOB           DEPTNO
---------- --------- ----------
SMITH      CLERK             20

SQL> col ename for a20
SQL> /

ENAME                JOB           DEPTNO
-------------------- --------- ----------
SMITH                CLERK             20

SQL> col deptno for a20
SQL> /

ENAME                JOB           DEPTNO
-------------------- --------- ----------
SMITH                CLERK     ##########

c] 设置列标题的对齐方式

col 字段名 justify [L|R|C]

SQL> /

ENAME      JOB           DEPTNO
---------- --------- ----------
SMITH      CLERK             20

SQL> col job justify c
SQL> /

ENAME         JOB        DEPTNO
---------- --------- ----------
SMITH      CLERK             20

d]设置一个列的回绕方式
col 字段名 for axx
按需选择下面一个
col 字段名 wrapped 或者
col 字段名 word_wrapped 或者

col 字段名 truncated

SQL> select * from t;

TEXT
--------------------------------------------------------------------------------
I must work hard for my parents

SQL> col text for a6
SQL> /

TEXT
------
I must
 work
hard f
or my
parent
s


SQL> col text word_wrapped
SQL> /

TEXT
------
I
must
work
hard
for
my
parent
s


SQL> col text truncated
SQL> /

TEXT
------
I must

e]显示列的当前属性值
col 字段名

SQL> col text
COLUMN   text ON
FORMAT   a6
truncate 

f]将所有列清为缺省值
clear columns

SQL> clear col
columns cleared
SQL> col text
SP2-0046: COLUMN 'text' not defined

6)set命令

a]设置当前session是否对修改的数据进行自动提交

SQL> set auto on
SQL> update t set text='think big for my future';

1 row updated.

Commit complete.
SQL> select * from t;

TEXT
--------------------------------------------------------------------------------
think big for my future

SQL> rollback;

Rollback complete.

SQL> select * from t;

TEXT
--------------------------------------------------------------------------------
think big for my future

SQL> set auto off

b]是否显示当前sql查询或修改的行数
SET FEED[BACK] {6|n|ON|OFF}
默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数。

SQL> select * from t;

TEXT
--------------------------------------------------------------------------------
think big for my future

SQL> set feed 1
SQL> /

TEXT
--------------------------------------------------------------------------------
think big for my future

1 row selected.

c]是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。
SET SERVEROUT[PUT] {ON|OFF}

SQL> exec dbms_output.put_line('think');

PL/SQL procedure successfully completed.

SQL> set serveroutput on
SQL> exec dbms_output.put_line('think');
think

PL/SQL procedure successfully completed.

d]显示每个sql语句花费的执行时间

set TIMING {ON|OFF}

e]遇到空行时不认为语句已经结束,从后续行接着读入。
SET SQLBLANKLINES ON

Sql*plus中, 不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:
select deptno, empno, ename
from emp
/*我是空行*/
where empno = '7788';
如果拷贝到sql*plus中执行, 就会出现错误。这个命令可以解决该问题

7)对sql buffer内的数据的操作
a]修改
c/旧值/新值

QL> l
  1* select * from t
SQL> c/select/update
  1* update * from t
SQL> l
  1* update * from t
SQL> c/from/think
  1* update * think t
SQL> l
  1* update * think t
    b]编辑
    edit
SQL> edit
Wrote file afiedt.buf

  1* update * think t

c]显示
list n显示sql buffer中的第n行,并使第n行成为当前行

SQL> update t
  2  set text='think';

1 row updated.

SQL> l
  1  update t
  2* set text='think'
SQL> l 2
  2* set text='think'

d]将sql buffer中的语句保存到一个文件中

SQL> save /home/oracle/t.sql
Created file /home/oracle/t.sql

e]将一个文件中的sql语句导入到sql buffer中

get file_name

8)在输入sql语句的过程中临时先运行一个sql*plus命令
另起一行,#打头

SQL>> select deptno, empno, ename
2 from emp
3 where
6 #desc emp
Name Null? Type
----------------------------------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
6 sal > 4000;
DEPTNO EMPNO ENAME
---------- ---------- ----------
10 7839 KING

基础篇到这边介绍完了,建议大家可以参阅oracle官网的sql*plus指南。下面我们用Tom的login.sql来介绍一下个性化配置sql*plus的思路

1、编辑login.sql文件:
REM 禁止任何输出,确保用户登录时不显示任何信息
set termout off
REM 定义默认编辑器为vim
define _editor=vi
REM 设定输出缓冲区的大小
set serveroutput on size 1000000 format wrapped
REM 设定默认的列宽度
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
REM 定义对long数据类型的数据显示的大小
set long 5000
REM 定义行的长度为多少字符
set linesize 131
REM 定义页大小
set pagesize 9999
REM 定义提示符
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 '
REM 设置显示系统时间
set time on
REM 再次显示输出
set termout on
2、编辑connect.sql文件
set termout off
connect &1
@login
========================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 whar format a30 word_wrapped
column plan_plus_exp format a100
set trimspool on
set long 5000
set linesize 100
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 time on
set termout on


分享到:
评论

相关推荐

    SQL*PLUS命令的使用大全

    用户可以通过自定义SQL*PLUS提示符来个性化工作环境,例如设置不同的颜色、样式或显示额外信息。 通过熟练掌握这些SQL*PLUS命令和特性,用户可以更高效地与Oracle数据库进行交互,进行数据查询、分析和管理,同时...

    Sql Edit Plus 2.0

    8. **用户自定义设置**:软件允许用户根据个人习惯定制界面布局、快捷键、字体样式等,以实现个性化的工作环境。 9. **日志记录与错误追踪**:所有执行的SQL命令和操作都会被记录在日志中,方便用户进行问题排查和...

    plsql 补全插件

    在实际使用中,开发者可以通过设置个性化选项来调整插件的行为,例如设置补全触发字符、过滤提示结果、自定义代码片段等。此外,部分插件还支持自动格式化代码,使得代码更加整洁美观。 总之,PLSQL补全插件是...

    oracle学习笔记

    `set sqlprompt`可以更改命令提示符,提高个性化和可读性。`set linesize`用于设置每行的最大宽度,便于阅读宽格式的数据。`set autocommit ON/OFF`控制是否自动提交事务,这对于确保数据的一致性和完整性至关重要。...

    SQL Developer Concepts and Usage

    - **个性化设置**: 用户可以根据自己的需求调整工具的各种设置。 - **外观**: 包括主题、字体大小等外观设置。 - **行为**: 如是否显示工具提示等行为设置。 #### 二十一、用户相关信息的位置 - **位置信息**: ...

    在Linux中安装Oracle10g的主要步骤

    9. **个性化用户配置**:在`/home/oracle/.bash_profile`文件中添加配置,定义`ORACLE_HOME`、`ORACLE_SID`等,以便`oracle`用户启动时自动加载。 10. **安装Oracle软件**:注销并重新登录为`oracle`用户,然后在解...

    plsql developer 7.0教程

    **用户界面-选项**:提供了对PL/SQL Developer用户界面的个性化设置,包括主题、字体、布局等,满足不同用户的审美和操作习惯。 **工具-差异**:介绍了比较两个文件或数据库对象之间的差异,辅助代码审查和版本...

    pl sql developer

    9. 自定义配置:用户可以根据个人喜好自定义界面布局、快捷键、颜色主题等,打造个性化的开发环境。 10. 兼容性:尽管名为"PL/SQL Developer",但它并不仅限于PL/SQL,也支持SQL*Plus命令,可以处理Oracle数据库的...

    VB结合SQL语句对汇文系统数据表的维护管理.pdf

    在实际使用汇文系统过程中难免会出现的一些难以预料的情况,有时可能需要直接对表数据进行修改维护,有时可能有一些业务模块所不具有的个性化统计需求。这时可能大多是采用管理,才可进一步对其进行有益的二次开发,...

    idea的mybatis插件(MAC通用)

    安装完成后,你将在IDEA的“设置”或“首选项”中看到MyBatis插件的相关选项,可以在此进行个性化配置。 在实际使用中,你可以通过以下方式体验插件带来的便利: 1. **创建新项目**:在IDEA中创建一个新的Java Web...

    PLSQL Developer 9 32bit.7z

    9. **自定义设置**:用户可以根据个人习惯自定义界面布局、快捷键和编码风格,打造个性化的开发环境。 10. **多语言支持**:虽然主要是为Oracle数据库服务,但PLSQL Developer也支持多种数据库连接,如Oracle、SQL ...

    mybatisplusdemo.zip

    1. **IntelliJ IDEA Global Settings**:这可能是IntelliJ IDEA的全局设置文件,包含了开发环境的一些个性化配置,如主题、字体大小、快捷键等。 2. **installed.txt**:可能记录了IDE安装或更新的信息,包括安装的...

    毕设springboot图书个性化推荐系统的设计与实现.zip

    图书个性化推荐系统 ==================== 1. 项目介绍 ------------------- 本系统是一个基于SpringBoot框架开发的图书推荐系统,通过分析用户的阅读历史、收藏记录、评分等行为,为用户提供个性化的图书推荐服务...

    spring boot+mybatis plus 在线答题系统

    这一功能通过在后台设置一定的规则(如题型分布、难度系数等),系统根据这些规则动态从题库中抽取题目,形成一份个性化的试卷。这需要在业务逻辑层面实现,通常会涉及到数据库查询优化和算法设计,以确保出题的公平...

    PLSQL12完美汉化包

    汉化版使得这些设置更加直观,用户可以根据需求进行个性化配置。 综上所述,"PLSQL12完美汉化包"是为中国用户量身打造的开发环境,它保留了原版的所有功能,同时解决了语言障碍,使得中国开发者能够更加高效、舒适...

    列模板技术在Oracle中的应用与实现.pdf

    1. **个性化数据展示**:根据需求定制列的显示格式,如货币、百分比、日期等,使得数据更易读。 2. **增强数据操作**:添加列级的过滤、排序、计算等功能,无需编写复杂的SQL语句即可实现。 3. **提高效率**:减少...

    oracle 11i e-book

    "Extend: Customization Standards Student Guide" 可能是指一本专门针对 Oracle 11i 定制和扩展标准的学生指南,旨在教授如何根据特定需求对系统进行个性化设置。 Oracle 11i 的核心组成部分包括: 1. **数据库...

    PLSQL10.0.5.1710最新版英文原版

    1. **PL/SQL编程环境**:PLSQL Developer为用户提供了集成的开发环境(IDE),支持编写、调试和测试PL/SQL程序单元,包括过程、函数、包、触发器和存储过程。它还提供代码完成、语法高亮和自动格式化功能,使得编写...

    天空音乐 v4.0 PLUS增强版(CSS+DIV)-ASP源码.zip

    【天空音乐 v4.0 PLUS增强版(CSS+DIV) - ASP源码】是一个基于ASP技术构建的在线音乐播放系统,适用于个人网站或小型音乐分享平台。该版本加强了前端界面设计,采用了CSS(层叠样式表)和DIV(文档布局元素)技术,...

Global site tag (gtag.js) - Google Analytics