ITPub博客

首页 > 数据库 > Oracle > Oracle9i SET用法简介2

Oracle9i SET用法简介2

原创 Oracle 作者:zfnccn 时间:2009-05-31 00:58:53 0 删除 编辑

Oracle9i SET用法简介2

SET MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON|OFF}][SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]

输出HTML为文本,这是iSQL*Plus使用的输出。由于它可能破坏浏览器屏幕,谨慎使用生成无效的HTML输出选项。对于动态报表和保存在本地的报告,HEADBODY选项是有用的。

SET MARKUP仅仅指定SQL*Plus输出将会是HTML编码。你必须使用SET MARKUP HTML ON SPOOL ONSQL*PlusSPOOL命令来生成和命名一个spool文件,并且开始写HTML输出进这个文件。SET MARKUP有和SQLPLUS –MARKUP一样的选项和功能。

更多细节信息参考"MARKUP Options"。用例参考SET MARKUP

使用SHOW MARKUP命令来查看MARKUP选项状态。

举例

下面的脚本用SET MARKUP HTML命令来使得HTML输出为文本,这个文本被spool到一个指定的文件:


注意

为了可读性,SET MARKUP的举例使用连接符"-"和空格进行排版。命令选项用正常条目链接。


使用你喜欢的文本编辑器来输入必要的命令以设置HTML选项和查询你想要的报表。

SET MARKUP HTML ON SPOOL ON HEAD "SQL*Plus Report -

STYLE TYPE='TEXT/CSS'><!--BODY {background: ffffc6} -->"

SET ECHO OFF

SPOOL employee.htm">

SELECT FIRST_NAME, LAST_NAME, SALARY

FROM EMP_DETAILS_VIEW

WHERE SALARY>12000;

SPOOL OFF

SET MARKUP HTML OFF

SET ECHO ON

由于这个脚本包含SQL*Plus命令,不要试图从buffer中以/(斜线)运行它,因为它将会失败。在你的文本编辑器中保存脚本,并且使用START运行它:

START employee.sql

当写html输出文件employee.htm">/EM>,因为SET TERMOUT默认是ON,输出也会显示在屏幕上。你可以用你的网页浏览器查看这个spool文件employee.htm">/EM>。它应该显示一些像下面的东西:

SET NEWP[AGE] {1|n|NONE}

SET NEWPAGEiSQL*Plus中不支持

设置从每一页的顶部到顶部标题之间要打印的空白行数。0值放置一个进纸在每一页的开始(包括首页),并且在多数终端清除屏显。如果你设置NEWPAGENONESQL*Plus不会打印一个空白行,也不会在报表页之间进纸。

SET NULL text

设置在一个SQL SELECT命令的结果中null值表示的text文本。使用COLUMN命令的NULL字句来覆盖对一个给定的列的NULL变量的设置。

SET NUMF[ORMAT] format

设置显示数字的默认格式。输入一个数字格式为format。关于数字格式描述,参考本章COLUMN命令的FORMAT子句。

SET NUM[WIDTH] {10|n}

设置显示数字的默认宽度。关于数字格式描述,参考本章COLUMN命令的FORMAT子句。

SET PAGES[IZE] {24|n}

设置每一页的行数。你可以设置PAGESIZE0来禁止显示所有的标题、页分隔符、题头、初始的空行和其他格式化的信息。

SET PAU[SE] {ON|OFF|text}

SET PAUSEiSQL*Plus中不支持。

当你运行报表时允许你控制终端的滚动。ON使得SQL*Plus在输出报表的每一页都中止。你必须按回车键进入下一页。你输入的text指定text文本会在每次SQL*Plus中止时显示。如果你输入的是多个字,必须用单引号括起来。

你可以在PAUSE命令中嵌入终端依赖的退出序列。这些序列允许你生成反转的视频消息或者支持这样特征的终端的其他影响。

SET RECSEP {WR[APPED]|EA[CH]|OFF}

RECSEP通知SQL*Plus在何处对记录进行分隔。例如,如果你设置RECSEPWRAPPEDSQL*Plus仅仅在换行后打印一个记录分隔。如果你设置RECSEPEACHSQL*Plus在每一行后打印一个记录分隔。如果你设置RECSEPOFFSQL*Plus不会打印记录分隔。

SET RECSEPCHAR {_|c}

定义显示或打印分隔记录的字符。一个记录分隔符包含一行重复LINESIZE次的RECSEPCHAR(记录分隔符)。默认是一个空格。

SET SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]}]

控制SQL*Plus中的存储过程或PL/SQL块是否显示输出(也就是DBMS_OUTPUT.PUTLINEOFF表示DBMS_OUTPUT.PUT_LINE禁止输出;ON表示显示输出。

SIZE设置在Oracle8iOracle9i数据库服务器中可以缓存的输出的字节数。n默认值是2000n的取值范围在20001000000

WRAPPED被启用,SQL*Plus在达到SET LINESIZE指定的行大小时会换行输出,需要的时候开始新的行。

WORD_WRAPPED被启用,在SET LINESIZE指定的行大小内,服务器输出的每一行都会换行。行被截断在字边界。SQL*Plus在每行会对齐调整,会跳过所有的行间插入的空格。

TRUNCATED被启用,服务器输出的每一行都会按照SET LINESIZE指定的行大小进行截断。

对于每一个FORMAT,每一个服务器输出行在一个新的输出行开始。

更多关于BMS_OUTPUT.PUT_LINE的信息,参考你的Oracle9i Application Developer's Guide - Fundamentals

举例

要在一个PL/SQL块中启用DBMS_OUTPUT.PUT_LINE输出文本显示,输入

SET SERVEROUTPUT ON

下面的例子显示了当你使用SET SERVEROUTPUT ON执行一个匿名过程时会发生什么:

BEGIN

DBMS_OUTPUT.PUT_LINE('Task is complete');

END;

/

Task is complete.

PL/SQL procedure successfully completed.

下面的例子显示当你使用SET SERVEROUTPUT ON创建一个触发器时会发生什么:

CREATE TRIGGER SERVER_TRIG BEFORE INSERT OR UPDATE -

OR DELETE

ON SERVER_TAB

BEGIN

DBMS_OUTPUT.PUT_LINE('Task is complete.');

END;

/

Trigger created.

INSERT INTO SERVER_TAB VALUES ('TEXT');

Task is complete.

1 row created.

要设置输出为WORD_WRAPPED,输入

SET SERVEROUTPUT ON FORMAT WORD_WRAPPED

SET LINESIZE 20

BEGIN

DBMS_OUTPUT.PUT_LINE('If there is nothing left to do');

DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?');

END;

/

If there is nothing

left to do

shall we continue

with plan B?

要设置输出为TRUNCATED,输入

SET SERVEROUTPUT ON FORMAT TRUNCATED

SET LINESIZE 20

BEGIN

DBMS_OUTPUT.PUT_LINE('If there is nothing left to do');

DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?');

END;

/

If there is nothing

shall we continue wi

SET SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}

SET SHIFTINOUTiSQL*Plus中不支持

允许显示转义字符的终端进行正确的对齐。SET SHIFTINOUT命令对于那些转义字符和数据一起显示的终端(比如IBM 3270终端)是有用的。你只能使用敏感的转义字符集(例如JA16DBCS)来设置这个命令。

使用VISIBLE来显示转义字符作为一个可见的字符(例如一个空格或冒号)。INVISIBLE则相反,不显示任何转义符。

举例

为了启用终端支持的转义字符显示,输入

SET SHIFTINOUT VISIBLE

SELECT LAST_NAME, JOB_ID FROM EMP_DETAILS_VIEW

WHERE SALARY > 12000;

LAST_NAME JOB_ID

---------- ----------

:JJOO: :AABBCC:

:AA:abc :DDEE:e

这里的":" 等于可见的转义字符

大小表示多字节的字符

小写表示单字节的字符

SET SHOW[MODE] {ON|OFF}

SET SHOWMODEiSQL*Plus中不支持

当你使用SET改变设置时,控制SQL*Plus是否列出SQL*Plus系统变量的oldnew设置。ON会列出设置;OFF禁止列出。SHOWMODE ON和舍弃的SHOWMODE BOTH有一样的性能。

SET SQLBL[ANKLINES] {ON|OFF}

SET SQLBLANKLINESiSQL*Plus中不支持

控制SQL*PlusSQL命令或脚本中是否允许空行。ON解释空行和新行作为SQL命令或脚本的一部分。OFF是默认值,在SQL命令或脚本中不允许空行或新行。

输入BLOCKTERMINATOR不需要运行SQL命令就可以停止SQL命令的输入。输入SQLTERMINATOR字符来停止SQL命令的输入,并且运行这个SQL语句。

举例

为了在SQL语句中允许空白行,输入

SET SQLBLANKLINES ON

REM Using the SQLTERMINATOR (default is ";")

REM Could have used the BLOCKTERMINATOR (default is ".")

SELECT * FROM DUAL;

输出结果如下:

D

-

X

SET SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}

仅在执行前转换SQL命令和PL/SQL块的大小写。SQL*Plus转换命令中的所有文本,包括加引号的文字和标示符。如果SQLCASEUPPER转换成大写,如果SQLCASELOWER转换成小写,如果SQLCASEMIXED什么也不改变。

SQLCASESQL缓存自身是不会改变的。

SET SQLCO[NTINUE] {> |text}

SET SQLCONTINUEiSQL*Plus中不支持

在你使用连接符(-)在另一行继续一个SQL*Plus命令后,设置SQL*Plus显示的字符序列作为提示。

举例

为了设置SQL*Plus命令继续提示为一个感叹号加一个空格,输入

SET SQLCONTINUE '! '

SQL*Plus将会如下提示继续:

TTITLE 'MONTHLY INCOME' -

! RIGHT SQL.PNO SKIP 2 -

! CENTER 'PC DIVISION'

默认的继续提示符是"> "

SET SQLN[UMBER] {ON|OFF}

SET SQLNUMBERiSQL*Plus中不支持

设置SQL命令或PL/SQL块的第二行和随后的行的提示。ON设置提示为行号。OFF设置提示为SQLPROMPT的值。

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

设置VARIABLE的状态或输出格式为版本指定的x.y[.z]x是版本号,y是发行版本号,z是更新版本号。例如,8.18.1.79.0.0。在最近的版本中,SQLPLUSCOMPATIBILITY可能会影响不同于VARIABLE的特征。

设置SQLPLUSCOMPATIBILITY的值低于9.0.0版本将会导致NCHARNVARCHAR2数据类型的VARIABLE定义还原为Oracle8i的状态,由此变量的大小按字节计算,或者字符依赖于被选的本地字符集。

默认的glogin.sql文件包含SET SQLPLUSCOMPAT 8.1.7。推荐加SET SQLPLUSCOMPAT 9.0.0到你的脚本来最大化和SQL*Plus未来版本的兼容性。

SET SQLPRE[FIX] {#|c}

SET SQLPREFIXiSQL*Plus中不支持

设置SQL*Plus的前缀符。当你正在输入一个SQL命令或者PL/SQL块时,你可以在一个分割的行上输入一个SQL*Plus命令,前缀加上SQL*Plus前缀符。SQL*Plus将会立即执行这个命令,不影响你正在输入的SQL命令或PL/SQL块。前缀符必须是一个不包含字符和数字的字符。

SET SQLP[ROMPT] {SQL>|text}

SET SQLPROMPTiSQL*Plus中不支持

设置SQL*Plus命令的提示符。

举例

你需要有Select Any Table的权限来成功运行下面例子的脚本。

为了改变你的SQL*Plus提示来显示你的用户名和SID,输入:

SET SQLPROMPT '&_CONNECT_IDENTIFIER > '

为了改变你的SQL*Plus提示来显示你的SID,输入

SET TERMOUT OFF

COLUMN X NEW_VALUE Y

SELECT RTRIM(INSTANCE, CHR(0)) X FROM V$THREAD;

SET SQLPROMPT '&Y SQL>'

SET TERMOUT ON

为了设置SQL*Plus命令提示来显示当前的用户,输入

SET TERMOUT OFF

COLUMN D22 NEW_VALUE VAR

SELECT USERNAME D22 FROM USER_USERS;

SET SQLPROMPT '&&VAR>'

SET TERMOUT ON

这些设置不是动态的。任何时候你改变实例,你需要重新设置它们,比如当你使用同一个连接命令登陆另一个实例。

SET SQLT[ERMINATOR] {;|c|ON|OFF}

设置用来结束和执行SQL命令的字符为c。它不能是一个数字与字母的字符,也不能是一个空格。OFF意味着SQL*Plus认为没有命令结束符号;你通过输入一个空行终止一个SQL命令。如果SQLBLANKLINES设置为ON,你必须使用BLOCKTERMINATOR来终止一个SQL命令。ON重设结束符号为默认的分号(;)

SET SUF[FIX] {SQL|text}

SET SUFFIXiSQL*Plus中不支持

设置脚本调用的SQL*Plus命令的默认的文件扩展名。SUFFIX不控制spool文件的扩展名。

举例

为了将默认的命令文件扩展名从默认的.SQL改为.UFI,输入

SET SUFFIX UFI

如果接着输入

GET EXAMPLE

SQL*Plus将会查找一个叫EXMPLE.UFI的文件代替EXAMPLE.SQL

SET TAB {ON|OFF}

SET TABiSQL*Plus中不支持

决定SQL*Plus如何在终端输出中规定空白的格式。OFF表示使用空格,ON表示使用TABTAB设置是每8个字符。是否默认为TAB依赖于系统。

SET TERM[OUT] {ON|OFF}

SET TERMOUTiSQL*Plus中不支持。

控制脚本执行的命令生成的输出显示。OFF表示禁止显示,这样你可以从脚本spool输出,而不会有屏显。ON表示显示输出。TERMOUT OFF不会影响来自你交互输入的命令的输出。

SET TI[ME] {ON|OFF}

SET TIMEiSQL*Plus中不支持。

控制当前时间的显示。ON表示在没一个SQL>提示符前显示当前时间。OFF禁止时间的显示。

SET TIMI[NG] {ON|OFF}

控制语句执行耗时统计的显示。ON表示显示每一个SQL命令或者PL/SQL块运行的耗时统计。OFF禁止显示每一个命令的耗时。查询关于SET TIMING ON显示的更多信息,参考为不同操作系统提供的Oracle installation and user's manual(s)。查阅TIMING命令以得到关于timing命令的更多信息。

SET TRIM[OUT] {ON|OFF}

SET TRIMOUTiSQL*Plus中不支持

决定SQL*Plus是否允许在每个显示行的行尾保留空格。ON表示在每行的行尾删除空格,特别是当你从一个慢的通信设备访问SQL*Plus时能提高性能。OFF表示允许SQL*Plus显示行尾的空格。TRIMOUT ON不会影响spool输出。

SET TRIMS[POOL] {ON|OFF}

SET TRIMSPOOLiSQL*Plus中不支持。

决定SQL*Plus是否允许每个spool行的行尾保留空格。ON表示在每行的行尾删除空格。OFF允许SQL*Plus包含行尾空格。TRIMSPOOL ON不会影响terminal输出。

SET UND[ERLINE] {-|c|ON|OFF}

设置用来对报告中的列标题进行下划线c注释的字符,c可能不是一个包含文字和数字的字符或者空白。ONOFF表明是否打开或关闭下划线。ON改变c的值回到默认的“-”。

SET VER[IFY] {ON|OFF}

在用值代替替换变量前后控制是否列出一个SQL语句或PL/SQL命令的文本。ON表示列出文本;OFF表示禁止列出。

SET WRA[P] {ON|OFF}

控制如果一个被选行对于行宽太长,是否截断被选行的显示。OFF表示截断被选行;ON表示允许被选行换行显示到下一行。

对于指定的列,使用COLUMN命令的WRAPPEDTRUNCATED子句来覆盖WRAP的设置。

[@more@]Oracle9i SET用法简介1

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

请登录后发表评论 登录
全部评论
  • 博文量
    32
  • 访问量
    690387