Oracle9i SET用法简介1
设置一个系统变量来改变你当前会话的SQL*Plus环境设置,比如:
• 数据的显示宽度 • 自定义的
HTML格式
• 启用或者禁用列标题的打印 • 每页行长度
你也可以在iSQL*Plus中使用系统变量屏幕来设置系统变量。 SET 系统变量 值
系统变量和值都会显示在SET命令中。
用法
SQL*Plus维护系统变量(也称之为SET命令变量)来使你对一个SQL*Plus会话建立一个特定的环境。你可以使用SET命令改变这些系统变量,并使用SHOW命令列出它们的值。
SET ROLE和SET TRANSACTION是SQL命令(详情参考Oracle9i SQL Reference)。当后面不接TRANSACTION或ROLE关键字时,SET默认是一个SQL*Plus命令。
SET APPI[NFO]{ON|OFF|text}
通过DBMS_APPLICATION_INFO包设置脚本的自动注册。它使得DBA能监控每个脚本的性能和资源使用情况。注册的名字显示在V$SESSION和V$SQLAREA视图中的MODULE字段。你可以使用DBMS_APPLICATION_INFO.READ_MODULE过程来获取注册的名字.
set用法
ON注册被@,@@或START命令调用的脚本。OFF禁用脚本注册。替代的,text的当前值被注册。当没有脚本在运行或者当APPINFO设为OFF(这是默认设置)时,Text指定注册text。对于text,默认是“SQL*Plus”。如果你在text中输入多个字,你必须使用引号把它们括起来。Text的最大长度受DBMS_APPLICATION_INFO包的限制.
注册的名字有nn@xfilename的格式,其中nn是脚本的深度水平;当脚本名被截断时,x是’<’,否则它是空的;filename是脚本名,可能会被截断成DBMS_APPLICATION_INFO包接口所允许的长度。
注意:
为了使用这个特征,你必须可以访问DBMS_APPLICATION_INFO包。以SYS用户运行DBMSUTIL.SQL(这个名字可能根据你的操作系统不同而不同)来创建DBMS_APPLICATION_INFO包。DBMSUTIL。SQL是Oracle9i数据库服务器产品的一部分。
更多关于DBMS_APPLICATION_INFO包的信息,参考Oracle9i Database Performance Tuning Guide and Reference手册。
举例:
由于它的默认是SET OFF,为了显示APPINFO的设置,输入 SET APPINFO ON SHOW APPINFO
set用法
APPINFO值为ON,并被设置给了”SQL*Plus” 为了改变默认的text值,输入 SET APPINFO 'This is SQL*Plus’ 为了确信注册已经被替代,输入 VARIABLE MOD VARCHAR2(50) VARIABLE ACT VARCHAR2(40)
EXECUTE DBMS_APPLICATION_INFO.READ_MODULE(:MOD, :ACT); PL/SQL procedure successfully completed。 PRINT MOD MOD
-—--———-———————-——-———--—-——----—-——-—--—--—-----—— This is SQL*Plus
为了改变APPINFO回它的默认值,输入 SET APPI OFF
SET ARRAY[SIZE] {15|n}
set用法
设置SQL*Plus一次从数据库里获取的行数--称之为一个batch。取值范围从1到5000。取大值会增加获取多行的查询和子查询的效率,但是需要更多的内存.值大于100之后,性能变化不大。ARRAYSIZE对SQL*Plus操作的结果没有影响,出了增加效率。
SET AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
控制Oracle什么时候提交对数据库的挂起的改变.ON表示在数据库成功执行每一个INSERT、UPDATE、DELETE命令或者PL/SQL块之后提交对数据库的挂起的改变。OFF禁止自动提交,因而你必须手动提交改变(例如,使用SQL命令COMMIT)。IMMEDAITE方式的功能和ON选项一样。
n表示在数据库成功执行n条INSERT、UPDATE、DELETE命令或者PL/SQL块之后提交对数据库的
挂起的改变.n必须大于0小于2,000,000,000。在成功执行n条INSERT、UPDATE、DELETE命令或者PL/SQL块、commit、rollback、SET AUTOCOMMIT命令之后,语句的计数器会重置为0。
注意:
对于这个特征,一个PL/SQL块被当做一个事物,不管包含多少个实际的SQL命令个数。
SET AUTOP[RINT] {ON|OFF}
设置绑定变量的自动打印.ON或OFF控制SQL*Plus是否自动显示绑定变量(参考EXECUTE命令执行PL/SQL块).更多关于现实绑定变量的信息,参考本章的PRINT命令。
SET AUTORECOVERY [ON|OFF]
ON表示在恢复期间, RECOVER命令自动应用所需的默认归档日志文件名。当AUTORECOVERY设置为ON时,不需要交互,需要提供的文件以特定的文件名存在于特定的目录.当AUTORECOVERY
set用法
为0N时所用用的文件名是由初始化参数LOG_ARCHIVE_DEST and LOG_ARCHIVE_FORMAT的值决定的。
在iSQL*Plus中,你必须设置使用RECOVERY命令将AUTORECOVERY设置为ON。试图使用AUTORECOVERY OFF时将会报错:
SP2—0872 在iSQL*Plus中必须使用SET AUTORECOVERY ON
OFF为默认值,要求你手工输入文件名,或者接受给定的默认文件名。关于数据库恢复的更多信息参考本章的RECOVER命令。
举例
为了设置恢复模式为AUTOMATIC,输入 SET AUTORECOVERY ON RECOVER DATABASE
SET AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
显示有关SQL DML语句(SELECT、INSERT、UPDATE或DETETE)成功执行的报告。这个报告可能包含执行统计和查询执行路径。
OFF不会显示跟踪报告。ON显示跟踪报告.TRACEONLY显示跟踪报告,但即便要,也不打印查询数据。EXPLAIN通过执行一个EXPLAIN PLAN显示查询执行路径。STATISTICS显示SQL语句的统计信息。更多EXPLIAN PLAN信息参考Oracle9i SQL Reference手册。 使用ON或TRACEONLY不带显式选项,默认为EXPLAN STATISTICS。
set用法
TRACEONLY选项对于禁止大查询的查询数据可能是有用的.如果STATISTICS被指定,SQL*Plus仍然会从服务器获得查询数据,只不过这些数据不会被显示. 在一个语句成功完成后,AUTOTRACE报告会被打印。
Oracle9i Database Performance Tuning Guide and Reference手册有关于执行计划和统计信
息的文档。
当SQL*Plus生成一个STATISTICS报告时,又一个数据库连接会自动生成。当STATISTICS选项被设置成OFF或者你退出SQL*Plus时,这个连接关闭。
你的AUTOTRACE报告的格式会根据你连接和配置的服务器的版本不同而不同。 当FIPS标志启用时,AUTOTRACE不可用。
更多AUTOTRACE信息参考\"Tracing Statements\"。
SET BLO[CKTERMINATOR] {。|c|ON|OFF}
设置用来结束PL/SQL块的字符为c。它不能是一个包含文字与数字的字符,也不能是空白。为了执行这个块,你必须使用RUN或者/(斜线)命令。
OFF意味着SQL*Plus认为没有PL/SQL块结束符号。ON改变c的值回默认的句号(.),而不是最近使用的符号.
SET CMDS[EP] {;|c|ON|OFF}
将用来分割一行内输入的多个SQL*Plus命令的非字符与数字的字符设置成c.ON或OFF控制你在一行内是否可以输入多个命令。ON自动地设置命令分隔符为分号(;).
举例
set用法
为了以TTITLE指定标题和以COLUMN格式化一列,两者在同一行,输入 SET CMDSEP +
TTITLE LEFT ’SALARIES’ + COLUMN SALARY FORMAT $99,999 SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = ’SH_CLERK’; SALARIES
LAST_NAME SALARY
--—---————-—---—-—--——-—— —---——-— Taylor $3,200 Fleaur $3,100 Sullivan $2,500 Geoni $2,800 Sarchand $4,200 Bull $4,100 Dellinger $3,400 Cabrio $3,000 Chung $3,800
set用法
Dilly $3,600 Gates $2,900 Perkins $2,500 Bell $4,000 Everett $3,900 McCain $3,200 Jones $2,800 SALARIES
LAST_NAME SALARY
————-—---———-—--—-————--— -——--——- Walsh $3,100 Feeney $3,000 OConnell $2,600 Grant $2,600 20 rows selected。
SET COLSEP {_|text}
set用法
在iSQL*Plus中,SET COLSEP决定了列的分隔符,这些分隔符作为标志显示在输出列的中间。HTML表输出是默认.为了生成预定格式的输出,你必须使用SET MARKUP HTML PREFORMAT ON命令设置PREFORMAT ON。
设置text显示在被选的列之间.如果COLSEP变量包含多个空格或者标点符号,你必须用单引号括起来。Text的默认值是一个字符.
在多行的记录中,列分隔符不会显示在那些开始在不同的行的列之间.通过使用BREAK…SKIP n,列分隔符不会显示在空行,并且不会覆盖记录分隔符.更多信息参考SET RECSEP章节.
举例
为了将列分隔符设置成”|”,输入 SET COLSEP '|’
SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_ID = 20;
LAST_NAME |JOB_ID |DEPARTMENT_ID
-————--—--——--——---—-—-——|-———-—-——-|—-—--——--—-—- Hartstein |MK_MAN | 20 Fay |MK_REP | 20
SET COM[PATIBILITY]{V7|V8|NATIVE}
set用法
指定使用的Oracle SQL语法的版本。对于Oracle7,设置COMPATIBILITY为V7,Oracle8为V8,以此类推。COMPATIBILITY总是默认为NATIVE。COMPATIBILITY应该正确设置为与你所连的数据库SQL语法版本一致,否则你可能不能运行任何SQL命令。
举例
为了运行一个脚本,用Oracle7 SQL语法生成的SALARY。SQL,输入 SET COMPATIBILITY V7 START SALARY
在运行这个文件后,重新设COMPATIBILITY为NATIVE以运行Oracle9i所生成的脚本: SET COMPATIBILITY NATIVE
你也可以在脚本的开头增加SET COMPATIBILITY V7命令,在文件的结尾重设COMPATIBILITY为NATIVE。
SET CON[CAT] {。|c|ON|OFF}
当SQL*Plus将解释下一个字符作为变量名的一部分时,设置用来终止一个替换变量引用的字符.当你接通CONNCAT时,SQL*Plus重设CONCAT值。
SET COPYC[OMMIT] {0|n}
在COPY命令提交改变到数据库后,控制批量处理的数量。COPY提交行到目的数据库,每次它复制n行批量处理。取值范围为0到5000。你可以设置一个批量的值为ARRAYSIZE变量。如果你设置COPYCOMMIT为0,COPY仅仅在复制操作结束时执行提交。
SET COPYTYPECHECK {ON|OFF}
set用法
当使用COPY命令插入或追加到表时,设置禁止数据类型比较。这是为了便于复制到DB2,它要求CHAR型被复制成一个DB2 DATE型。
SET DEF[INE] {&|c|ON|OFF}
将作为前缀替换变量的字符设置为c。ON或OFF控制是否SQL*Plus将会扫描替换变量的命令,并用它们的值进行替换.ON改变c的值回默认的‘&’,而不是最近使用的字符。设置DEFINE为0FF覆盖SCAN变量的设置。更多SCAN变量的信息,参考SET SCAN命令。
SET DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
设置你可以递归描述对象的水平深度。DEPTH子句有效范围从1到50。如果你SET DESCRIBE DEPTH ALL,深度将会被设置为50,这是允许的最大值.当一个对象包含多个对象类型时,你爷可以显示行数和缩进显示属性或列名。使用SET LINESIZE命令来控制数据显示的宽度. 更多关于描述对象的信息,参考本章前述的DESCRIBE。
举例
为了描述EMP_DETAILS_VIEW视图到2级深度,并且当也要显示行数时缩进输出,首先,向下面这样描述视图:
DESCRIBE EMP_DETAILS_VIEW Name Null? Type
------———-—--—-—-—-—-—---—-—-——-------——- --—————— ------—-—-——-—---——-—-———--- EMPLOYEE_ID NOT NULL NUMBER(6)
set用法
JOB_ID NOT NULL VARCHAR2(10) MANAGER_ID NUMBER(6) DEPARTMENT_ID NUMBER(4) LOCATION_ID NUMBER(4) COUNTRY_ID CHAR(2) FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25) SALARY NUMBER(8,2) COMMISSION_PCT NUMBER(2,2)
DEPARTMENT_NAME NOT NULL VARCHAR2(30) JOB_TITLE NOT NULL VARCHAR2(35) CITY NOT NULL VARCHAR2(30) STATE_PROVINCE VARCHAR2(25) COUNTRY_NAME VARCHAR2(40) REGION_NAME VARCHAR2(25)
为了格式化EMP_DETAILS_VIEW以便输出显示缩进和行数,使用如下的SET DESCRIBE命令: SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON
set用法
为了显示上面的设置,输入 DESCRIBE EMP_DETAILS_VIEW Name Null? Type
—--——-—----——----—- -—-——--— —-—----——--——-——-——- 1 EMPLOYEE_ID NOT NULL NUMBER(6) 2 JOB_ID NOT NULL VARCHAR2(10) 3 MANAGER_ID NUMBER(6) 4 DEPARTMENT_ID NUMBER(4) 5 LOCATION_ID NUMBER(4) 6 COUNTRY_ID CHAR(2) 7 FIRST_NAME VARCHAR2(20)
8 LAST_NAME NOT NULL VARCHAR2(25) 9 SALARY NUMBER(8,2)
10 COMMISSION_PCT NUMBER(2,2)
11 DEPARTMENT_NAME NOT NULL VARCHAR2(30) 12 JOB_TITLE NOT NULL VARCHAR2(35) 13 CITY NOT NULL VARCHAR2(30)
set用法
14 STATE_PROVINCE VARCHAR2(25) 15 COUNTRY_NAME VARCHAR2(40) 16 REGION_NAME VARCHAR2(25)
SET ECHO {ON|OFF}
控制START命令是否列出一个脚本中的每一个被执行的命令.ON表示列出命令,OFF禁止列出。
SET EDITF[ILE] file_name[.ext]
SET EDITFILE在iSQL*Plus中不支持
为EDIT命令设置默认的文件名。更多关于EDIT命令的信息参考本章EDIT部分。
你可以包括一个路径和(/或)文件扩展。关于改变默认扩展的信息,参考SET领命的SUFFIX变量.这个默认的文件名和最大文件名长度是操作系统指定的。
SET EMB[EDDED] {ON|OFF}
控制每个报告从一页的什么地方开始。OFF强制每个报告在一个新页的顶部开始。ON允许一个报告在一页的任何地方开始.当你想一个报告接着上个运行的报告立即开始打印时,设置EMBEDDED为ON.
SET ESC[APE] {|c|ON|OFF}
定义作为转义字符的字符。OFF表示不定义转义字符。ON表示启用转义字符。ON会修改c的值回默认值“”。
set用法
你可以在代替字符(通过SET DEFINE设置)之前使用转义字符来指定SQL*Plus应该对待代替字符作为一个普通字符而不是要求变量替换.
举例
如果你定义了感叹号(!)为转义符,那么 SET ESCAPE !
ACCEPT v1 PROMPT 'Enter !&1:’ 显示如下提示: Enter &1:
为了将转义符设回默认值(反斜线),输入 SET ESCAPE ON
SET FEED[BACK] {6|n|ON|OFF}
当一个脚本选择至少n条记录时,显示返回的记录数。ON或OFF表示是否打开或者关闭这个显示。打开feedback ON设置n为1。将feedback设置为0等同于设置它为OFF。
SET FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
检查以确保SQL语句符合ANSI/IOS SQL92标准.如果任何非标准的结构发现,Oracle服务器将会作为错误标志它们,并且显示语法错误。这个SQL语言ALTER SESSION SET FLAGGER命令等价。
set用法
即使在你没有连上数据库时,你也可以执行SET FLAGGER。FIPS标志将会一直影响SQL*Plus会话,直到SET FLAGGER OFF(或ALTER SESSION SET FLAGGER=OFF)命令成功,或者你退出SQL*Plus。
当FIPS标志启用时,SQL*Plus对CONNECT、DISCONNECT和ALTER SESSION SET FLAGGER命令显示一个警告,即使它们是成功的.
SET FLU[SH] {ON|OFF}
SET FLUSH在iSQL*Plus中不支持
控制什么时候将输出送到用户的显示设备.OFF表示允许主机操作系统缓存输出。ON表示禁用缓存。
仅仅当你运行一个没有交互的脚本时(也就是说,你的脚本运行结束前,你都不需要看到输出和/或者提示符)使用OFF。FLUSH OFF的使用减少了I/O的处理数量,可以提升性能。
SET HEA[DING] {ON|OFF}
在报表中控制列标题的打印。ON表示在报表中打印列标题;OFF表示禁止列标题. SET HEADING OFF命令不会影响显示的列宽,仅仅禁止列标题自身的打印。
举例
为了禁止在报表中显示列标题,输入 SET HEADING OFF
如果你接着运行一个SQL SELECT命令
set用法
SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = ’AC_MGR'; 输出结果如下: Higgins 12000
为了重新显示列标题,输入 SET HEADING ON
SET HEADS[EP] {||c|ON|OFF}
定义用作标题分隔符的字符。标题分隔符不能是包括文字与数字的或者空白.你可以在COLUMN命令、在为了将一个列标题或题头分成多行的老的BTITLE和TTITLE表格中使用标题分隔符.ON或OFF表示是否打开或关闭标题分隔符。当标题分隔符设置为OFF时,SQL*Plus像任何其它字符一样打印标题分隔符。ON修改c的值回默认值“|\"。
SET INSTANCE [instance_path|LOCAL]
将你会话的默认实例修改为指定的实例路径。使用SET INSTANCE命令不会连上数据库。当没指定实例时,使用默认的实例.任何在SET INSTANCE使用前的命令都和默认的实例通信。 为了重新将实例设置成你操作系统的默认值,你既可以输入SET INSTANCE不加instance_path,也可以SET INSTANCE LOCAL。参考你的操作系统指定的Oracle文档查阅如何设置初始默认实例的描述。
set用法
注意,你只能在当前没有连接到任何一个实例时改变实例。也就是说,你必须首先确认你已经断开了当前的实例,然后设置或者修改这个实例,接着为了让新的设置生效,重连到一个实例。 这个命令只能在Oracle Net运行时发布。你可以使用任何有效的Oracle Net连接标示符作为指定的实例路径.参考你操作系统指定的Oracle文档查阅关于你的操作系统如何指定Oracle Net连接标示符的完整描述.
举例
为了默认实例为“PROD1”,输入 DISCONNECT
SET INSTANCE PROD1
为了将实例设回本地默认值,输入 SET INSTANCE local
为了改变这个实例,你必须断开任何实例的连接。
SET LIN[ESIZE] {80|n}
在开始一个新行之前,设置SQL*Plus一行的字符显示总数。它也可以控制在TTILE、BTITILE、REPHEADER和REPFOOTER中居中或右对齐的文本的位置。改变linesize设置可以影响来自DESCRIBE命令输出文本的换行显示。DESCRIBE输出列典型地会分配给linesize的一定比例。减少或者增加linesize的大小可能会在你的显示中出现出乎预料的文本换行。你可以定义LINESIZE从1到你的系统支持的最大值。查阅提供给你的操作系统的Oracle installation and user's manual(s)。
set用法
SET LOBOF[FSET] {n|1}
设置获取和显示CLOB和NCLOB数据的起始位置。
举例
为了将要获取的CLOB列的数据的起始位置设置成第22位,输入 SET LOBOFFSET 22
CLOB数据将会在你的屏幕上换行;SQL*Plus不会截断,直到第23个字符。
SET LOGSOURCE [pathname]
指定恢复时所需的归档日志的位置.默认值由Oracle初始化文件init。ora中的初始化参数LOG_ARCHIVE_DEST设置。不指定路径使用SET LOGSOURCE命令时从默认路径取文件。
举例
为了将日志文件恢复的默认路径设置为目录\"/usr/oracle90/dbs/arch”,输入 SET LOGSOURCE ”/usr/oracle90/dbs/arch\" RECOVER DATABASE
SET LONG {80|n}
对于显示CLOB、LONG、NCLOB和XML类型的值设置最大的宽度(用字节表示)。n的最大值是2GB。
举例
为了设置显示和复制LONG值最大到500,输入
set用法
SET LONG 500
LONG数据将会屏显换行;SQL*Plus将会从第501个字节后截断。LONG的默认值是80字节.
SET LONGC[HUNKSIZE] {80|n}
设置SQL*Plus增量大小(按字节)来获取CLOB、LONG、NCLOB或XML类型的值.
举例
为了在SQL*Plus中获取LONG值的增量大小设为100字节,输入 SET LONGCHUNKSIZE 100
LONG数据将会按100字节增量获取,直到整个值被获取,或者到达了SET LONG的值,二者取最小值。
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输出选项。对于动态报表和保存在本地的报告,HEAD和BODY选项是有用的.
SET MARKUP仅仅指定SQL*Plus输出将会是HTML编码。你必须使用SET MARKUP HTML ON SPOOL ON和SQL*Plus的SPOOL命令来生成和命名一个spool文件,并且开始写HTML输出进这个文件。SET MARKUP有和SQLPLUS –MARKUP一样的选项和功能。 更多细节信息参考\"MARKUP Options\"。用例参考SET MARKUP。 使用SHOW MARKUP命令来查看MARKUP选项状态。
set用法
举例
下面的脚本用SET MARKUP HTML命令来使得HTML输出为文本,这个文本被spool到一个指定的文件:
注意:
为了可读性,SET MARKUP的举例使用连接符”—\"和空格进行排版。命令选项用正常条目链接。
使用你喜欢的文本编辑器来输入必要的命令以设置HTML选项和查询你想要的报表。 SET MARKUP HTML ON SPOOL ON HEAD ”
SPOOL employee。htm\">
SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY>12000; SPOOL OFF
SET MARKUP HTML OFF
set用法
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 NEWPAGE在iSQL*Plus中不支持
设置从每一页的顶部到顶部标题之间要打印的空白行数。0值放置一个进纸在每一页的开始(包括首页),并且在多数终端清除屏显.如果你设置NEWPAGE为NONE,SQL*Plus不会打印一个空白行,也不会在报表页之间进纸.
SET NULL text
设置在一个SQL SELECT命令的结果中null值表示的text文本。使用COLUMN命令的NULL字句来覆盖对一个给定的列的NULL变量的设置。
SET NUMF[ORMAT] format
设置显示数字的默认格式。输入一个数字格式为format。关于数字格式描述,参考本章COLUMN命令的FORMAT子句。
SET NUM[WIDTH] {10|n}
set用法
设置显示数字的默认宽度。关于数字格式描述,参考本章COLUMN命令的FORMAT子句。
SET PAGES[IZE] {24|n}
设置每一页的行数。你可以设置PAGESIZE为0来禁止显示所有的标题、页分隔符、题头、初始的空行和其他格式化的信息.
SET PAU[SE] {ON|OFF|text}
SET PAUSE在iSQL*Plus中不支持。
当你运行报表时允许你控制终端的滚动。ON使得SQL*Plus在输出报表的每一页都中止.你必须按回车键进入下一页.你输入的text指定text文本会在每次SQL*Plus中止时显示。如果你输入的是多个字,必须用单引号括起来。
你可以在PAUSE命令中嵌入终端依赖的退出序列.这些序列允许你生成反转的视频消息或者支持这样特征的终端的其他影响。
SET RECSEP {WR[APPED]|EA[CH]|OFF}
RECSEP通知SQL*Plus在何处对记录进行分隔.例如,如果你设置RECSEP为WRAPPED,SQL*Plus仅仅在换行后打印一个记录分隔.如果你设置RECSEP为EACH,SQL*Plus在每一行后打印一个记录分隔。如果你设置RECSEP为OFF,SQL*Plus不会打印记录分隔。
SET RECSEPCHAR {_|c}
定义显示或打印分隔记录的字符。一个记录分隔符包含一行重复LINESIZE次的RECSEPCHAR(记录分隔符)。默认是一个空格。
set用法
SET SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]}]
控制SQL*Plus中的存储过程或PL/SQL块是否显示输出(也就是DBMS_OUTPUT。PUTLINE)OFF表示DBMS_OUTPUT.PUT_LINE禁止输出;ON表示显示输出.
SIZE设置在Oracle8i或Oracle9i数据库服务器中可以缓存的输出的字节数。n默认值是2000。n的取值范围在2000到1000000。
当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
set用法
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.
set用法
要设置输出为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');
set用法
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 SHIFTINOUT在iSQL*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
set用法
—-——————-- ---——---—- :JJOO: :AABBCC: :AA:abc :DDEE:e
这里的\":” 等于可见的转义字符 大小表示多字节的字符 小写表示单字节的字符
SET SHOW[MODE] {ON|OFF}
SET SHOWMODE在iSQL*Plus中不支持
当你使用SET改变设置时,控制SQL*Plus是否列出SQL*Plus系统变量的old和new设置。ON会列出设置;OFF禁止列出。SHOWMODE ON和舍弃的SHOWMODE BOTH有一样的性能.
SET SQLBL[ANKLINES] {ON|OFF}
SET SQLBLANKLINES在iSQL*Plus中不支持
控制SQL*Plus在SQL命令或脚本中是否允许空行。ON解释空行和新行作为SQL命令或脚本的一部分。OFF是默认值,在SQL命令或脚本中不允许空行或新行.
输入BLOCKTERMINATOR不需要运行SQL命令就可以停止SQL命令的输入。输入SQLTERMINATOR字符来停止SQL命令的输入,并且运行这个SQL语句。
举例
为了在SQL语句中允许空白行,输入
set用法
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转换命令中的所有文本,包括加引号的文字和标示符。如果SQLCASE为UPPER转换成大写,如果SQLCASE为LOWER转换成小写,如果SQLCASE为MIXED什么也不改变。 SQLCASE在SQL缓存自身是不会改变的。
SET SQLCO[NTINUE] {> |text}
SET SQLCONTINUE在iSQL*Plus中不支持
在你使用连接符(—)在另一行继续一个SQL*Plus命令后,设置SQL*Plus显示的字符序列作为提示.
举例
set用法
为了设置SQL*Plus命令继续提示为一个感叹号加一个空格,输入 SET SQLCONTINUE '! ’ SQL*Plus将会如下提示继续: TTITLE ’MONTHLY INCOME’ — ! RIGHT SQL.PNO SKIP 2 - ! CENTER ’PC DIVISION’ 默认的继续提示符是”〉 ”。
SET SQLN[UMBER] {ON|OFF}
SET SQLNUMBER在iSQL*Plus中不支持
设置SQL命令或PL/SQL块的第二行和随后的行的提示.ON设置提示为行号。OFF设置提示为SQLPROMPT的值。
SET SQLPLUSCOMPAT[IBILITY] {x。y[。z]}
设置VARIABLE的状态或输出格式为版本指定的x.y[。z]。x是版本号,y是发行版本号,z是更新版本号.例如,8。1、8.1.7或9。0。0.在最近的版本中,SQLPLUSCOMPATIBILITY可能会影响不同于VARIABLE的特征。
设置SQLPLUSCOMPATIBILITY的值低于9。0.0版本将会导致NCHAR或NVARCHAR2数据类型的VARIABLE定义还原为Oracle8i的状态,由此变量的大小按字节计算,或者字符依赖于被选的本地字符集。
set用法
默认的glogin.sql文件包含SET SQLPLUSCOMPAT 8.1。7。推荐加SET SQLPLUSCOMPAT 9。0。0到你的脚本来最大化和SQL*Plus未来版本的兼容性。
SET SQLPRE[FIX] {#|c}
SET SQLPREFIX在iSQL*Plus中不支持
设置SQL*Plus的前缀符。当你正在输入一个SQL命令或者PL/SQL块时,你可以在一个分割的行上输入一个SQL*Plus命令,前缀加上SQL*Plus前缀符。SQL*Plus将会立即执行这个命令,不影响你正在输入的SQL命令或PL/SQL块。前缀符必须是一个不包含字符和数字的字符。
SET SQLP[ROMPT] {SQL〉|text}
SET SQLPROMPT在iSQL*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用法
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 SUFFIX在iSQL*Plus中不支持
设置脚本调用的SQL*Plus命令的默认的文件扩展名.SUFFIX不控制spool文件的扩展名。
set用法
举例
为了将默认的命令文件扩展名从默认的.SQL改为。UFI,输入 SET SUFFIX UFI 如果接着输入 GET EXAMPLE
SQL*Plus将会查找一个叫EXMPLE。UFI的文件代替EXAMPLE。SQL。
SET TAB {ON|OFF}
SET TAB在iSQL*Plus中不支持
决定SQL*Plus如何在终端输出中规定空白的格式。OFF表示使用空格,ON表示使用TAB.TAB设置是每8个字符。是否默认为TAB依赖于系统。
SET TERM[OUT] {ON|OFF}
SET TERMOUT在iSQL*Plus中不支持.
控制脚本执行的命令生成的输出显示。OFF表示禁止显示,这样你可以从脚本spool输出,而不会有屏显。ON表示显示输出.TERMOUT OFF不会影响来自你交互输入的命令的输出。
SET TI[ME] {ON|OFF}
SET TIME在iSQL*Plus中不支持。
控制当前时间的显示。ON表示在没一个SQL>提示符前显示当前时间。OFF禁止时间的显示.
set用法
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 TRIMOUT在iSQL*Plus中不支持
决定SQL*Plus是否允许在每个显示行的行尾保留空格。ON表示在每行的行尾删除空格,特别是当你从一个慢的通信设备访问SQL*Plus时能提高性能.OFF表示允许SQL*Plus显示行尾的空格。TRIMOUT ON不会影响spool输出.
SET TRIMS[POOL] {ON|OFF}
SET TRIMSPOOL在iSQL*Plus中不支持.
决定SQL*Plus是否允许每个spool行的行尾保留空格.ON表示在每行的行尾删除空格.OFF允许SQL*Plus包含行尾空格。TRIMSPOOL ON不会影响terminal输出。
SET UND[ERLINE] {—|c|ON|OFF}
设置用来对报告中的列标题进行下划线c注释的字符,c可能不是一个包含文字和数字的字符或者空白。ON或OFF表明是否打开或关闭下划线。ON改变c的值回到默认的“—\"。
SET VER[IFY] {ON|OFF}
set用法
在用值代替替换变量前后控制是否列出一个SQL语句或PL/SQL命令的文本.ON表示列出文本;OFF表示禁止列出。
SET WRA[P] {ON|OFF}
控制如果一个被选行对于行宽太长,是否截断被选行的显示.OFF表示截断被选行;ON表示允许被选行换行显示到下一行.
对于指定的列,使用COLUMN命令的WRAPPED和TRUNCATED子句来覆盖WRAP的设置.
因篇幅问题不能全部显示,请点此查看更多更全内容