sqlplus中常用设置参数

一、各种设置参数解释

转自http://baike.baidu.com/view/1239908.htm

Sql*plus是一个最常用的工具,具有很强的功能,主要有:

  1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。
  2. 执行sql语句执行pl/sql。
  3. 执行sql脚本。

  4. 数据的导出,报表。
  5. 应用程序开发、测试sql/plsql。
  6. 生成新的sql脚本。
  7.
供应用程序调用,如安装程序中进行脚本的安装。
  8. 用户管理及权限维护等。

二、下面就介绍一下一些常用的sql*plus命令:

  1.
执行一个SQL脚本文件

  SQL>start file_name
  SQL>@
file_name

  我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

  @与@@的区别是什么?
  @等于start命令,用来运行一个sql脚本文件。

  @命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。

  @@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。

  如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:

  @@nest_start.sql - - 相当于@ c:\temp\nest_start.sql
  则我们在sql*plus中,这样执行:

  SQL> @ c:\temp\start.sql

附注:也可以在shell中运行,例如sqlplus
‘/as sysdba‘ @C:\temp\start.sql

2.
对当前的输入进行编辑

  SQL>edit
  3. 重新运行上一次运行的sql语句

  SQL>/
  4. 将显示的内容输出到指定文件
  SQL> SPOOL file_name

  在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
  5. 关闭spool输出
  SQL> SPOOL OFF

  只有关闭spool输出,才会在输出文件中看到输出的内容。
  6.显示一个表的结构
  SQL> desc table_name

1). 设置当前session是否对修改的数据进行自动提交("[
...]"表示可省略)
  SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}

  2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
  SQL> SET ECHO
{ON|OFF}

  3).是否显示当前sql语句查询或修改的行数
  SQL> SET FEED[BACK] {6|n|ON|OFF}

  默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数

  4).是否显示列标题
  SQL> SET HEA[DING] {ON|OFF}
  当set heading off
时,在每页的上面不显示列标题,而是以空白行代替

  5).设置一行可以容纳的字符数
  SQL> SET LIN[ESIZE] {80|n}

  如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。

6).设置页与页之间的分隔
  SQL> SET NEWP[AGE]
{1|n|NONE}
  当set newpage 0 时,会在每页的开头有一个小的黑方框。
  当set newpage n
时,会在页和页之间隔着n个空行。
  当set newpage none 时,会在页和页之间没有任何间隔。

  7).显示时,用text值代替NULL值
  SQL> SET NULL text

  8).设置一页有多少行数
  SQL> SET PAGES[IZE] {24|n}

  如果设为0,则所有的输出内容为一页并且不显示列标题

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

  在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。

  10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。
  SQL> SET WRA[P]
{ON|OFF}
  当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap
on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。(默认为on状态)

  11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
  SQL> SET TERM[OUT]
{ON|OFF}
  在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool
off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。

  12).将SPOOL输出中每行后面多余的空格去掉
  SQL> SET TRIMS[OUT] {ON|OFF}

  13)显示每个sql语句花费的执行时间
  set TIMING {ON|OFF}

  14). 遇到空行时不认为语句已经结束,从后续行接着读入。
  SET SQLBLANKLINES ON
  Sql*plus中,
不允许sql语句中间有空行, 这在从其它地方拷贝脚本到sql*plus中执行时很麻烦. 比如下面的脚本:
  select deptno, empno,
ename
  from emp
  where empno = ‘7788‘;
  如果拷贝到sql*plus中执行,
就会出现错误。这个命令可以解决该问题

  15).设置DBMS_OUTPUT的输出(只是用来在终端输出用)
  SET SERVEROUTPUT ON BUFFER
20000
  用dbms_output.put_line(‘strin_content‘);可以在存储过程中输出信息,对存储过程进行调试

  如果想让dbms_output.put_line(‘ abc‘);的输出显示为:
  SQL> abc,而不是SQL>abc,则在SET
SERVEROUTPUT ON后加format wrapped参数。

  16). 输出的数据为html格式
  set markup html
  在8.1.7版本(也许是816? 不太确定)以后,
sql*plus中有一个set markup html的命令, 可以将sql*plus的输出以html格式展现.
  注意其中的spool on,
当在屏幕上输出的时候, 我们看不出与不加spool on有什么区别, 但是当我们使用spool filename 输出到文件的时候,
会看到spool文件中出现了等tag.

      3.修改页面显示和行的默认值

但是这种方法,在你下次进入Sql Plus的时候还要重新设定,很麻烦。所以可以修改默认设置。

在Oracle的安装目录下找到glogin.sql,

我安装的是Oracle
11,这个文件在D:\oracle\product\11.2.0\dbhome_1\sqlplus\admin下,用搜索很容易找到。然后打开这个文件,

得到:

--

--
Copyright (c) 1988, 2005, Oracle.  All Rights Reserved.

--

--
NAME

--
  glogin.sql

--

--
DESCRIPTION

--
  SQL*Plus global login "site profile" file

--

--
  Add any SQL*Plus commands here that are to be executed when a

--
  user starts SQL*Plus, or uses the SQL*Plus CONNECT command.

set linesize 300
;

set pagesize 100
;

更多详细内容参见:http://blog.csdn.net/kkdelta/article/details/7178890

4.对于clob和blob以及to_char和to_clob之间的讨论

(1)clob和blob介绍

  1. BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节

  2. CLOB CLOB全称为字符大型对象(Character Large
    Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节。

  3. NCLOB
    基于国家语言字符集的NCLOB数据类型用于存储数据库中的固定宽度单字节或多字节字符的大型数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节

  4. BFILE
    当大型二进制对象的大小大与4G字节时,BFILE数据类型用于将其存储在数据库外的操作系统文件中;当其大小不足4G字节时,则将其存储在数据库内部的操作系统文件中,BFILE列存储文件定位程序,此定位程序指向服务器上的大型二进制文件。

  5. 总结就是:Blob是存大对象类型(一般是文件 图片,office文件等.) Clob是存大文本/长字符串

(2)实际项目中遇到的问题

在sqlplus中查询clob类型的数据默认是不能显示全的,默认一行显示80个字符(多的会切割掉),不管是否设置set linesize
什么的,这是对clob的限制,例如:

select sql_fulltext from v$sql;就会发现每行只能显示80个字符。

有几种办法显示全:


方法一:select dbms_lob.substr(sql_fulltext)
from  v$sql;

#注意,这样虽然显示全了,但是在后面还是会出问题,虽然这次不切割了,会在最后提示错误:ERROR:
ORA-06502: PL/SQL: 数字或值错误
:  字符串缓冲区太小
     ORA-06512: 在 line 1

所以实际上没有解决。哈哈哈哈

方法二:其实是可以设置参数解决上面的错误

SQLPLUS输出CLOB类型的数据时经常会碰到数据被截断从而无法完全输出的问题,其实这些都是因为sqlplus参数设置的原因,本文将对几个主要的参数进行讨论。

1、set long 2000000000

首先是long参数,该参数的最大值是2000000000(2G),单位是字节。含义是:Sets
maximum width (in bytes) for displaying CLOB, LONG, NCLOB and XMLType values;
and for copying LONG values.中文含义大概是设置CLOB、LONG、NLOB和XMLType类型的最大显示字节数。

2、set longchunksize 255

与long参数相关的是longchunksize参数,该参数的值应该比long参数的值要小,单位也是字节。含义是:Sets
the size (in bytes) of the increments SQL*Plus uses to retrieve a CLOB, LONG,
NCLOB or XMLType value.即sqlplus会按照这个参数的值来一段一段的获取上述类型的数据,直到达到long的值或者数据获取完毕。

举例:

数据有10个字节:0123456789

如果set longchunksize 2,那么显示出来的效果就是

01

23

45

67

89

如果set longchunksize 4,那么显示出来的效果就是

0123

4567

89

3、set linesize 255

这个参数用的很频繁,相信含义大家也都知道:Sets the total number of
characters that SQL*Plus displays on one line before beginning a new
line.这个参数是用来控制sqlplus显示的,而longchunksize是用来控制sqlplus获取数据的,所以如果这个参数设置不当也不能完全显示。

举例:

数据有10个字节:0123456789

set longchunksize 4

set linesize 3

显示效果如下

012  --3无法显示

456  --7无法显示

89

所以想正确显示select sql_fulltext from v$sql; 的方法就是设置set
long 2000000000,真的最大2G,换其他的还真不行,嘻嘻。set longchunksize 255。

然后就可以正常查询了,注意不要用dbms_lob.substr了哦,直接select
sql_fulltext from v$sql;就可以啦

方法三:编写程序(反正我是没看懂)

给你一个我写的读lob的plsql作为参考:
create or
replace procedure haozhu_getblob(
table_name in varchar2,
field_id in
varchar2,
field_name in varchar2,
v_id in varchar2,
v_pos in number

)
is
lobloc clob;
buffer varchar2(32767);
amount number := 60;

offset number := 1;
query_str varchar2(1000);
create_str
varchar2(1000);
bloblength number;
ddlcursor integer;
begin

query_str :=‘select DBMS_LOB.GETLENGTH(‘||field_name||‘) from ‘||table_name||‘
where ‘||field_id||‘= :id‘;
--dbms_output.put_line(‘query_str is
‘||query_str);
EXECUTE IMMEDIATE query_str INTO bloblength USING v_id;

--dbms_output.put_line(‘The length of blob is ‘||bloblength);
query_str
:=‘select ‘||field_name||‘ from ‘||table_name||‘ where ‘||field_id||‘= :id‘;

EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;

offset:=offset+(v_pos-1)*amount;
while (offset<=bloblength) loop

--dbms_output.put_line(‘offset: ‘||offset);
--read 2000 varchar2 from the
buffer
dbms_lob.read(lobloc,amount,offset,buffer);

dbms_output.put_line(buffer);
offset:=offset+amount;
end loop;
end;

/

O(∩_∩)O哈哈~,这篇完,后面还会用到跟clob相关的内容,当时纠结死了

sqlplus中常用设置参数

时间: 2024-10-13 22:20:14

sqlplus中常用设置参数的相关文章

Android Studio中常用设置与快捷键

常用设置: 1.Tab不用4个空格Code Style->Java->Tabs and Indents->Use tab characterCode Style->General->Use tab character (例如:版本控制Diff界面按下Tab) 2.可视化Tab和空格Settings->IDE Settings->Editor->Appearance->Show whitespaces 3.显示代码行数Settings->IDE S

Android Studio中常用设置与快捷键(私人珍藏,Eclipse转AS必看)

常用设置: 1.Tab不用4个空格 Code Style->Java->Tabs and Indents->Use tab character Code Style->General->Use tab character               (例如:版本控制Diff界面按下Tab) 2.可视化Tab和空格 Settings->IDE Settings->Editor->Appearance->Show whitespaces 3.显示代码行数

word中常用设置

1.解决word中插入公式后行距变宽-->页面设置-->无网格 2.解决文字中插入公式(文字与公式不对齐)-->段落-->中文板式-->文本对齐方式(居中) (若是全部需要修改ctrl +A-->段落) 3.解决减号消失的问题-->公式编辑器-->样式-->定义 减号太短-->复制别的减号!!! 目录(可以点击某个标题设置其缩进程度)可以全部选中调整行间距适合就好 photoshop :换背景 打开图片-->双击锁着的图层-->选择-

php中常用设置

设置SESSION的生命周期 今天我所要想解决的问题,简单来说,就是设置SESSION的生命周期问题,其实问题是很简单了,只是不知道为什么,我用session_cache_expire(12*60);关掉浏览器后竟然不管用. 后来发现,其实php session是基于cookie的,所以要设置session的生命周期,首先要设置cookie的失效时间.因为在客户端(如浏览器)登录网站时,SESSION 是否有用,首先找客户端是否有 COOKIE,通过COOKIE 中的 SESSION ID 去找

pycharm中常用设置

设置自定义代码块 有时候我们需要写大量重复的代码,这样是没有意义的,所以,我们可以制作一个代码块,几个单词就完成重复代码的书写,来方便我们使用. 例子中用的是建立Flask的代码块 这是我们用来测试的. 然后 回车一按,你就会看到第一幅图的代码了 设置git提交的快捷键 注意:在Ubuntu中是Git中的Commit Changes 可视化管理数据库 原文地址:https://www.cnblogs.com/kuxingseng95/p/9097295.html

MySQL中的配置参数interactive_timeout和wait_timeout(可能导致过多sleep进程的两个参数)

1)interactive_timeout:参数含义:服务器关闭交互式连接前等待活动的秒数.交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端.参数默认值:28800秒(8小时) (2)wait_timeout:参数含义:服务器关闭非交互连接之前等待活动的秒数.在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_

笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.di

Oracle sqlplus 常用设置

Oracle sqlplus 常用设置 §2.5 SQLPLUS常用设置 使用过程中大都需要进行必要的环境设置才能完成我们所需要的输出. 所有环境的设置由SET命令加相应的环境变量来完成.下面是常用的环境设置: §2.5.1   ARRAYSIZE(取回的行数)SET ARRAY[SIZE]{integer} 一次可以提取(Fetch)的行的数目,1->5000,当有较长字段时应设小些. §2.5.2   AUTOCOMMIT(自动提交)SET AUTO [COMMIT] { [ OFF | O

Asp数据库连接出错,请检查Conn.asp文件中的数据库参数设置

Asp数据库连接出错,请检查Conn.asp文件中的数据库参数设置 解决办法: IIS-本地计算机-应用程序池-DefaultAppPool(右键)-高级设置将"启用32位应用程序"设置为true