当前位置:文档之家› 彻底理解SQLPlus系统变量

彻底理解SQLPlus系统变量

彻底理解SQLPlus系统变量
彻底理解SQLPlus系统变量

彻底理解SQL*Plus 系统变量

―――By 木水鱼(Jason Sun) E-mail:sjshjz@https://www.doczj.com/doc/6f4878476.html,

1.APPI[NFO]{ON|OFF|text}

启用或禁止通过DBMS_APPLICATION_INFO包自动注册当前会话正在执行的模块(命令文件)的名称,或者手工注册模块名称。这可以使DBA能够监视每个模块的性能和资源使用情况。注册的模块的名称保存在V$SESSION视图相应会话的MODULE字段中。注册名称时实际是调用DBMS_APPLICATION_INFO.SET_MODULE存储过程。

[ON]:允许自动注册通过@、@@或START调用的命令文件的名称。

[OFF]:禁止自动注册通过@、@@或START调用的命令文件的名称。

[text]:用来手工设置当前会话正在执行的模块名称。

示例:

SQL> set appinfo on

SQL> @js2008.sql ---模块名将被自动注册

SQL> @jz.sql ---模块名将被自动注册

当APPINFO为ON时命令文件的名称是自动被注册的。可执行下面两条语句分别查看js2008.sql模块和jz.sql模块的执行情况:

SQL> select * from v$sqlarea where module like '%js2008.sql';

SQL> select * from v$sqlarea where module like '%jz.sql';

而当APPINFO为OFF时则不会自动注册命令文件的名称,我们可以手工注册。

SQL> set appinfo off

SQL> set appinfo js2008 ---手工注册模块名

SQL> @js2008.sql

SQL> set appinfo jz ---手工注册模块名

SQL> @jz.sql

然后执行下面两条语句分别查看js2008.sql模块和jz.sql模块的执行情况:

SQL> select * from v$sqlarea where module='js2008';

SQL> select * from v$sqlarea where module='jz';

2.ARRAY[SIZE] {n}

指示SQL*Plus一次从服务器获取多少行的数据。n的默认值是15取值范围是1至5000。当查询返回的数据较多时设置为较大的值可提高效率,但需占用更多的内存。假设ARRAYSIZE设为5,而某条SQL查询将返回100行数据,则SQL*Plus需分20次才能从服务器获取到所有的数据行。如下所示:

创建一个具有100行数据的表,并设置ARRAYSIZE为5:

SQL> set autotrace on ---使SQL*Plus显示统计信息

SQL> create table t_temp as select * from all_objects where rownum<101;

SQL> set arraysize 5

查询表中所有行

SQL> select * from t_temp;

显示的统计信息如下:

0 recursive calls

9 db block gets

26 consistent gets

0 physical reads

0 redo size

15561 bytes sent via SQL*Net to client

2992 bytes received via SQL*Net from client

21 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

100 rows processed

参看统计信息中“SQL*Net roundtrips to/from client”这行数据。它说明了SQL*Plus需分20次从服务器获取所有数据行(加上发起查询的一次共21次)。

SQL> set arraysize 100 修改ARRAYSIZE为100

SQL> select * from t_temp;

显示统计信息如下:

0 recursive calls

9 db block gets

7 consistent gets

0 physical reads

0 redo size

13262 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

100 rows processed

再参看统计信息中的“SQL*Net roundtrips to/from client”这一行,说明SQL*Plus只需1次就可以从服务器获取到所有数据行(加上发起查询的一次共2次)。

3.AUTO[COMMIT]{OFF|ON|IMM[EDIATE]|n}

控制何时提交对数据库的修改。

[OFF]:禁止自动提交,因此我们必须执行COMMIT来手工提交改变。

[ON]:每执行成功一个INSERT、UPDA TE、DELETE语句或PL/SQL块后自动提交。

[IMMEDIATE]:同ON。

[n]:每执行成功n个INSERT、UPDA TE、DELETE语句或PL/SQL块后自动提交。

4.AUTOP[RINT] {OFF|ON}

控制SQL*Plus是否自动显示绑定变量的值。默认为OFF。

SQL> variable v_date char(10)

SQL> set autoprint on

下面PL/SQL执行成功后将自动打印出绑定变量的值。

SQL> begin

2 select to_char(sysdate,'yyyy-mm-dd') into :v_date from dual;

3 end;

4 /

PL/SQL 过程已成功完成。

V_DATE

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

2007-05-21

5.AUTORECOVERY [ON|OFF]

ON 设置RECOVER 命令自动应用恢复过程中所需要的归档重做日志文件的默认文件名。当AUTORECOVERY 设为ON 时,不需要与用户进行交互,这时所需要的文件必须具有所期望的名称并且位于所期望的位置。当AUTORECOVERY 设为ON 时,所使用的文件名来源于初始化参数LOG_ARCHIVE_DEST 和LOG_ARCHIVE_FORMAT 的值。

要在iSQL*Plus 中使用RECOVER 命令,必须把AUTORECOVERY 设为ON。如果尝试在AUTORECOVERY 为OFF 时恢复数据库,将产生以下错误:

SP2-0872: 在iSQL*Plus 中必须使用SET AUTORECOVERY ON

OFF 是默认选项,它需要手工输入文件名或者接受所建议的默认文件名。

SET AUTORECOVERY ON

RECOVER DA TABASE

6.AUTOT[RACE] {OFF|ON|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

控制在成功执行SQL DML语句后显示一个跟踪报表。报表可包括一些关于执行情况的统计信息和执行计划。默认为OFF。

[OFF]:不显示跟踪报表。

[ON]:显示跟踪报表。设为ON或TRACEONL Y隐含包括了EXPLAIN和STATISTICS 选项。

[TRACEONL Y]:显示跟踪报表但不显示查询结果。

[EXPLAIN]:显示查询执行路径。

[STATISTICS]:显示SQL语句统计信息。

SQL> set autotrace traceonly

SQL> select * from scott.dept;

Execution Plan

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

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (FULL) OF 'DEPT'

Statistics

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

0 recursive calls

2 db block gets

2 consistent gets

0 physical reads

0 redo size

604 bytes sent via SQL*Net to client

503 bytes received via SQL*Net from client

2 SQL*Net roundtrips to/from client

0 sorts (memory)

0 sorts (disk)

4 rows processed

7.BLO[CKTERMINATOR] {OFF|ON|c}

设置用于结束输入PL/SQL块的字符。此字符不能是数字字符。默认结束字符为“.”。

[OFF]:禁用结束字符。

[ON]:启用结束字符,并重置结束字符为“.”。

[c]:启用结束字符,并指定结束字符为所设置的字符。

修改结束字符为“!”

SQL> set blockterminator !

SQL> begin

2 insert into;

3 ! ---输入!后,块输入结束

SQL> set blockterminator off

SQL> begin

2 insert into;

3 ! ---输入!后,块输入不会结束

4 !

5

8.CMDS[EP] {c|OFF|ON}

控制是否允许在一行中输入多个SQL*Plus命令。如果为ON则还可以设置多个SQL*Plus 命令之间的分隔符,默认的分隔符为“;”。

[OFF]:禁止在一行中输入多个SQL*Plus命令。

[ON]:允许在一行中输入多个SQL*Plus命令,并设置分隔符为“;”。

[c]:允许在一行中输入多个SQL*Plus命令,并指定分隔符为所设置的字符。

SQL> set cmdsep on

SQL> column e_name heading EmployeeName;column dept_name heading DepartName SQL> set cmdsep off

SQL> column e_name heading EmployeeName;column dept_name heading DepartName SP2-0158: 未知的COLUMN选项"dept_name"

9.COLSEP {text}

设置SELECT语句返回的各列之间显示的分隔符。默认是一个空格。

SQL> set colsep ||

SQL> set colsep ‘‘

https://www.doczj.com/doc/6f4878476.html,[PATIBILITY]{V7|V8|NATIVE}

设置当前连接到的Oracle服务器的版本。如果连接到Oracle7则设为V7,连接到Oracle8或以后版本则可设为V8,如果希望由数据库服务器来决定则设为NA TIVE(如果连接到Oracle9i,COMPATIBILITY默认设为NA TIVE)。另,当连接到Oracle9i时可以把此变量的值设为V7或V8,这允许你执行Oracle7、Oracle8或Oracle8i的SQL语句。

11.CON[CAT] {c|OFF|ON}

设置置换变量和紧跟其后的普通字符的连接符。这个变量不好解释还是直接看例子吧。c默认为“.”。

举例,我们要查询SCOTT.DEPT表中的数据。

SQL> define v=scott.de

SQL> select * from &v; ---这条语句肯定会出错,因为不存在表SCOTT.DE 原值1: select * from &v

新值1: select * from scott.de

select * from scott.de

*

ERROR 位于第1 行:

ORA-00942: 表或视图不存在

SQL> select * from &v.pt; ---注意&v与pt之间有个句点

原值1: select * from &v.pt

新值1: select * from scott.dept

DEPTNO DNAME

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

10 a"ccounting

20 RESEARCH

30 s

40 OPERA TIONS

12.COPYC[OMMIT] {n}

设置SQL*Plus的COPPY命令在复制多少行数据后进行提交。默认值为0,表示在整个复制操作完成后再提交。n的取值范围为0至5000。

13.COPYTYPECHECK {OFF|ON}

启用或禁用在使用COPY命令插入或附加数据到表中时是否比较数据类型。默认为ON。

14.DEF[INE] {c|OFF|ON}

设置置换变量的前缀字符。

[OFF]:不扫描置换变量,不替换置换变量的值。此设置会覆盖系统变量SCAN的设置。

[ON]:扫描并替换置换变量的值。设为ON后会自动把置换变量前缀改为“&”。

[c]:设置置换变量的前缀字符为指定字符。

SQL> set define #

SQL> define aa=scott.dept

SQL> select * from #aa; ---将把此处的置换变量#aa替换为scott.dept

原值1: select * from #aa

新值1: select * from scott.dept

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

SQL> set define off ---禁止扫描替换变量

SQL> select * from #aa; ---此处的#aa不再作为置换变量,因此将会出错

select * from #aa

*

ERROR 位于第1 行:

ORA-00911: 无效字符

15.DESC[RIBE] [DEPTH {n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]

用来控制SQL*Plus的DESCRIBE命令的输出。

[DEPTH]:设置递归描述一个对象的深度,默认为1。n的取值范围为1至50。当设为All时n=50。

[LINENUM]:控制是否显示行号,默认为OFF。

[INDENT]:控制是否自动进行缩进,默认为ON。

SQL> create type address as object

2 (street varchar2(20),

3 city varchar2(20)

4 );

5 /

类型已创建。

SQL> create type employee as object

2 (last_name varchar2(30),

3 empaddr address,

4 salary number(7,2)

5 );

6 /

类型已创建。

注意比较下面两条desc employee命令的输出有什么不同。

SQL> desc employee

名称是否为空? 类型

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

LAST_NAME V ARCHAR2(30)

EMPADDR ADDRESS

SALARY NUMBER(7,2)

SQL> set desc depth 2

SQL> desc employee

名称是否为空? 类型

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

LAST_NAME V ARCHAR2(30)

EMPADDR ADDRESS

STREET V ARCHAR2(20)

CITY V ARCHAR2(20)

SALARY NUMBER(7,2)

16.MARKUP HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP

{ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]

控制SQL*Plus以HTML格式输出查询结果。

[HTML ON|OFF]:允许或禁止SQL*Plus对输出进行HTML编码。默认为OFF。

[HEAD text]:设置在最终生成的HTML中,位于“”标签内的文本。

[BODY text]:设置在最终生成的HTML中,位于“”标签中的文本。

[TABLE text]:设置在最终生成的HTML中,位于“

”标签中的文本。

[ENTMAP ON|OFF]:设为ON表示对查询结果中存在的一些特殊字符进行映射,比如把“>”和“<”映射为“>”和“<”,以便能在HTML中正确显示。默认为ON。

[SPOOL ON|OFF]:ON表示生成格式完整的HTML文件,包括、、等标签。默认为OFF。

[PREFORMAT ON|OFF]:ON表示把查询结果按原格式放在HTML标签“

”中,OFF表示格式化查询结果为一个HTML中的“
”。默认为OFF。

SQL> set markup html on head "This is page title." body "style='b

ackground:red'" spool on

SQL> spool js2008.html


SQL> select * from scott.dept;


SQL> spool off

执行成功后请参见最终生成的js2008.html的源代码。

17.ECHO {OFF|ON}

控制在执行命令文件时是否列出其中的每个命令。

18.EDITF[ILE] file_name[.ext]

设置EDIT命令使用的缺省文件名。也可以包含路径和扩展名。默认为“afiedt.buf”。

SQL> edit ---将打开afiedt.buf文件进行编辑

SQL> set editfile js2008.sql

SQL> edit ---将打开js2008.sql文件进行编辑

19.EMB[EDDED] {OFF|ON}

[OFF]:在一个新页的顶部开始打印报表。

[ON]:紧跟着上一个报表的末尾开始打印报表。

20.ESC[APE] {c|OFF|ON}

定义转义字符。

[OFF]:取消转义字符定义。

[ON]:启用转义字符。并把转义字符重置为“\”。

[c]:设置转义字符为指定字符。

SQL> define v=scott.dept ---定义置换变量

SQL> select * from &v;

原值1: select * from &v

新值1: select * from scott.dept

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

SQL> set escape on

SQL> select * from \&v; ---&已被转义,所以这条语句出错SP2-0552: 未说明结合变量”V”

21.FEED[BACK] {n|OFF|ON}

设置是否显示一个查询返回的记录数。

[OFF]:不显示查询返回的记录数。

[ON]:显示查询返回的记录数,并把n设为1。

[n]:当一个查询至少选择了n行时显示返回的记录数。设为0时同OFF。

22.FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}

检查SQL语句是否符合ANSI/ISO SQL92标准。如果不符合则无法执行并返回错误。同SQL语句“ALTER SESSION SET FLAGGER”等价。ENTRY、INTERMEDIATE、FULL分别表示ANSI/ISO SQL92的三个结构层次。

SQL> begin null;end;

2 /

PL/SQL 过程已成功完成。

SQL> set flagger entry

SQL> begin null;end;

2 /

begin null;end;

*

ERROR 位于第1 行:

ORA-00097: 使用Oracle SQL 特性不在SQL92 Entry 级中

因为PL/SQL块是Oracle特有的,并不包含在SQL92标准中,所以无法正确执行。

23.FLU[SH] {OFF|ON}

控制什么时候输出被发送到用户的显示设备。默认值为ON。

[OFF]:允许操作系统缓冲输出。尽当执行一个非交互式的命令文件时才使用此值。

[ON]:禁止操作系统缓冲输出。

24.HEA[DING] {OFF|ON}

设置是否显示列标题。默认值为ON。

25.HEADS[EP] {c|OFF|ON}

定义标题分隔符。此字符不能是数字字符或空格字符。可以在COLUMN命令或BTITLE 和TTITLE命令中使用此字符使列标题或者报表标题显示为多行。当设为OFF时,把标题分隔符显示为普通字符。设为ON时将重置为默认的“|”字符。

SQL> set headsep +

SQL> column dname heading 'D+NAME'

SQL> select * from scott.dept;

D

DEPTNO NAME LOC

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

10 a"ccounting new YOrK

20 RESEARCH DALLAS

30 s CHICAGO

40 OPERA TIONS BOSTON

SQL> set headsep off

SQL> column dname heading 'D+NAME'

SQL> select * from dept;

DEPTNO D+NAME LOC

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

10 a"ccounting new YOrK

20 RESEARCH DALLAS

30 s CHICAGO

40 OPERA TIONS BOSTON

26.INSTANCE [instance_path|LOCAL]

把会话的默认实例更改为指定的实例路径。使用SET INSTANCE 命令不会连接到数据库。当在命令中没有指定实例时使用的是默认实例。在首次使用SET INSTANCE 之前的所有命令都使用的是默认实例。

要把实例恢复为默认值,可输入SET INSTANCE 或者SET INSTANCE LOCAL。关于如何设置初始默认实例的信息可参考相关操作系统的Oracle 文档。

只有在没有连接到任何实例时才能修改实例。就是说,必须首先从当前连接到的实例断开然后才能设置或修改实例并重新连接到实例以使新的设置生效。

只有当运行了Oracle Net 时才能使用这个命令。可使用任何有效的Oracle Net连接标识符作为实例路径。对于如何指定Oracle Net 连接标识符的完整描述可参考操作系统特定的Oracle 文档。实例路径的最大长度是64个字符。

27.LIN[ESIZE] {n}

设置SQL*Plus显示输出时一行最多允许显示的字符数。默认值是80。

28.LOBOF[FSET] {n}

设置对于CLOB和NCLOB类型的列,从第几个字符的位置开始获取其数据并显示。

创建一个包含CLOB类型列的表,并插入一行数据:

SQL> create table mytest (mylob clob);

表已创建。

SQL> insert into mytest values('My name is js2008!');

已创建1 行。

SQL> set loboffset 1

SQL> select * from mytest;

MYLOB

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

My name is js2008!

注意下面的查询结果,“My name is js2008!”中的“M”没有显示出来。

SQL> set loboffset 2

SQL> select * from mytest;

MYLOB

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

y name is js2008!

29.LOGSOURCE [pathname]

指定在恢复数据库时到何处获取归档日志。默认值由Oracle 初始化文件init.ora 中的初始化参数LOG_ARCHIVE_DEST 设置。使用不包括pathname 的SET LOGSOURCE 命令可恢复默认位置。

SET LOGSOURCE "/usr/oracle90/dbs/arch"

RECOVER DA TABASE

30.LONG {n}

设置显示LONG、CLOB、NCLOB值和复制LONG值的最大宽度(单位为字节)。默认值为80。

31.LONGC[HUNKSIZE] {n}

设置SQL*Plus 用于检索LONG、CLOB、NCLOB 或XMLType 值的增量大小(字节)。

32.NEWP[AGE] {n|NONE}

设置在报表中每一页的顶部打印几行空行。如果设为0则在每一页的开头放置一个进纸符。如果设为NONE则不打印空行也不在页的开头放置进纸符。

33.NULL text

设置SQL SELECT命令返回的查询结果中的NULL值的表现形式。

SQL> set null (null)

SQL> select ename,sal,comm from scott.emp;

ENAME SAL COMM

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

SMITH $800 (null)

ALLEN $1600 $300

WARD $1250 $500

JONES $2975 (null)

MARTIN $1250 $1400

34.NUMF[ORMAT] format

设置数字值的缺省显示格式。对数字值的显示格式的描述请参见SQL*Plus参考。

SQL> set numformat $99999

SQL> select ename,sal from emp;

ENAME SAL

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

SMITH $800

ALLEN $1600

35.NUM[WIDTH] {n}

设置数字值的缺省显示宽度。缺省为10。

36.PAGES[IZE] {n}

设置每页能够显示的数据行数。默认值14。

37.PAU[SE] {OFF|ON|text}

控制SQL*Plus窗口显示输出时的滚动行为。

[OFF]:不暂停滚动,一次显示完。

[ON]:每开始显示一个新页时暂停,等待按下回车键再显示。

[text]:暂停时显示的提示文本。

SQL> set pause on

SQL> set pause 按回车键显示下一页:

SQL> select * from dept;

按回车键显示下一页:

38.RECSEPCHAR {c}

设置记录分隔符。默认为一个空格字符“”。示例请参见下一系统变量的说明。

39.RECSEP {WR[APPED]|EA[CH]|OFF}

设置是否及何时显示或打印记录分隔符。

[WRAPPED]:只有记录行被自动换行时才显示记录分隔符。

[EACH]:在每行记录的下一行显示记录分隔符。

[OFF]:不显示记录分隔符。

SQL> set recsepchar +

SQL> set recsep each

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

10 a"ccounting new YOrK

+++++++++++++++++++++++++++++++++++++++

20 RESEARCH DALLAS

+++++++++++++++++++++++++++++++++++++++

30 s CHICAGO

+++++++++++++++++++++++++++++++++++++++

40 OPERA TIONS BOSTON

+++++++++++++++++++++++++++++++++++++++

40.SERVEROUT[PUT] {OFF|ON} [SIZE n] [FOR[MAT]

{WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]}]

控制是否显示存储过程或PL/SQL块通过DBMS_OUTPUT.PUT_LINE输出的内容。

[OFF]:不显示。此为默认值。

[ON]:显示。

[SIZE n]:设置缓冲区的字节大小。默认为2000字节,可取值范围为2000至1,000,000。

[FORMAT WRAPPED]:当某行的长度大于LINESIZE设置的大小时自动换行。

[FORMAT WORD_WRAPPED]:在WORD边界自动换行。此为默认值。

[FORMAT TRUNCA TED]:当某行的长度大于LINESIZE设置的大小时行被截短。

SQL> set serverout on

SQL> begin dbms_output.put_line('I am js2008.'); end;

2 /

I am js2008.

PL/SQL 过程已成功完成。

SQL> set linesize 9

SQL> begin dbms_output.put_line('I am js2008.'); end;

2 /

I am

js2008.

PL/SQL 过程已成功完成。

SQL> set serverout on format wrapped

SQL> begin dbms_output.put_line('I am js2008.'); end;

2 /

I am js20

08.

PL/SQL 过程已成功完成。

41.SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}

42.SHOW[MODE] {OFF|ON}

控制在使用SET命令改变系统变量的值后是否显示系统变量的旧值和新值。默认值为“OFF”。

SQL> set showmode on

新值: showmode BOTH

SQL> set linesize 10

原值: linesize 80 ---将显示LINESIZE的旧值和新值

新值: linesize 10

43.SQLBL[ANKLINES] {ON|OFF}

控制是否允许在SQL命令中出现空行。默认值为OFF。

SQL> set sqlblanklines off

SQL> select *

2 ---在此直接回车后立即退出到命令提示符下

SQL> set sqlblanklines on

SQL> select *

2 ---在此直接回车后并不退出。允许出现空行

3

4 from dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

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

在执行之前转换SQL命令和PL/SQL块的大小写。命令中的所有文本都会被转换包括引号中的字串和标识符。默认值是“MIXED”。

[MIXED]:不进行转换。

[LOWER]:转换为小写。

[UPPER]:转换为大写。

下面命令查询不到数据,因为Oracle比较字符串时是大小写敏感的:

SQL> set sqlcase mixed

SQL> select * from scott.dept where dname='sAles';

未选定行

下面命令可以查询到数据,因为在执行之前“sAles”被转换为了大写的“SALES”:SQL> set sqlcase upper

SQL> select * from scott.dept where dname='sAles';

DEPTNO DNAME LOC

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

30 SALES CHICAGO

45.SQLCO[NTINUE] {text}

设置当使用连接符(-)把一个SQL*Plus命令分成多行输入时的提示文本。默认为“>”。

SQL> set sqlcontinue 'Enter the next line>'

SQL> column DNAME -

Enter the next line>heading DepartmentName

SQL> select deptno,dname from scott.dept;

DEPTNO DepartmentName

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

10 ACCOUNTING

20 RESEARCH

30 SALES

40 OPERA TIONS

46.SQLN[UMBER] {OFF|ON}

控制在输入多行的SQL命令或PL/SQL块时的提示符。默认为ON。

[OFF]:设置提示符为SQLPROMPT的值。

[ON]:设置提示符为行号。

SQL> select *

2 from

3 scott.dept;

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

设置SQL*Plus的兼容性。它设置V ARIABLE命令的行为与指定版本的行为相同。

48.SQLPRE[FIX] {c}

设置SQL*Plus前缀字符。在输入SQL命令或PL/SQL块时可以在一个单独的行上输入一个带有前缀字符的SQL*Plus命令,SQL*Plus将立即执行这个命令并不会影响你正在输入的SQL命令或PL/SQL块。前缀字符必须是一个非数字字符。默认为“#”。

SQL> select *

2 #column DNAME heading DepartmentName

2 #column LOC heading Location

2 from scott.dept;

DEPTNO DepartmentName Location

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

49.SQLP[ROMPT] {text}

设置SQL*Plus的命令提示符。默认为“SQL> ”。

SQL> set sqlprompt 'js2008> '

js2008> exit

50.SQLT[ERMINATOR] {c|OFF|ON}

设置用于结束和执行SQL语句的字符。默认字符为“;”。

[OFF]:不提供SQL结束符。可输入一个空行以结束SQL语句的输入。

[ON]:重置结束符为“;”字符。

[c]:设置为指定字符。

SQL> set sqlterminator ! ---使用感叹号为结束符而不使用默认的分号。

SQL> select * from scott.dept!

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

51.SUF[FIX] {text}

设置SQL*Plus命令中使用的命令文件的缺省扩展名。默认为“sql”。

下面命令将打开js2008.sql文件供编辑:

SQL> edit js2008

下面命令将打开js2008.dat文件供编辑:

SQL> set suffix dat

SQL> edit js2008

52.TAB {OFF|ON}

控制SQL*Plus如何格式化最终输出中的空白。设为OFF时用空格表示输出中的空白,设为ON时用TAB表示输出中的空白。默认为ON。

53.TERM[OUT] {OFF|ON}

控制当使用@、@@或START命令执行一个命令文件时,是否显示中间结果。设置为OFF不会影响直接在“SQL>”提示符下输入的SQL语句或PL/SQL块的输出。默认值为ON。

54.TI[ME] {OFF|ON}

控制是否在每个SQL*Plus的命令提示符之前显示当前时间。默认为OFF。

SQL> set time on

09:47:58 SQL>

09:47:59 SQL> set time off

SQL>

55.TIMI[NG] {OFF|ON}

控制是否显示成功执行每条SQL语句或PL/SQL块所花费的时间。

SQL> set timing on

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

已用时间: 00: 00: 00.00 ---这里将显示所花费的时间

56.TRIM[OUT] {OFF|ON}

控制SQL*Plus是否允许显示每一行之后的空格。设置为ON可提高效率。默认为ON。此变量的值不影响TRIMSPOOL。

SQL> set linesize 88

SQL> set trimout on

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

SQL> set trimout off

TRIMOUT设为OFF后,每一行都将有88个字符,而我的SQL*Plus窗口只有80个字符宽,所以一行只能显示80个字符而剩下的8个字符自动折行显示到了下一行。所以从外观上看各行记录之间都有一个空白行。

SQL> select * from scott.dept;

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

57.TRIMS[POOL] {ON|OFF}

控制当用SPOOL命令输出查询结果到文件中时,是否删除文件中每行后的空白字符。默认值为OFF。此变量的值不影响TRIMOUT。

58.UND[ERLINE] {c|ON|OFF}

控制SQL*Plus在输出查询结果时显示在列标题下方的分隔字符。缺省为“-”字符。

[OFF]:不显示。

[ON]:显示,并重置为缺省的“-”字符。

[c]:设置为指定字符。

SQL> set underline on

SQL> select * from scott.dept;

DEPTNO DNAME LOC

---------- -------------- ------------- ---注意这里!

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

SQL> set underline *

SQL> select * from scott.dept;

DEPTNO DNAME LOC

********** ************** ************* ---注意这里!

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

59.VER[IFY] {OFF|ON}

控制SQL*Plus在替换置换变量之前或之后时是否列出SQL语句或PL/SQL命令的文本。

SQL> define v=scott.dept

SQL> set verify on

SQL> select * from &v;

原值1: select * from &v---VERIFY=ON,所以将显示替换前后的SQL语句新值1: select * from scott.dept

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

SQL> set verify off

SQL> select * from &v; ---VERIFY=OFF,所以不会显示替换前后的SQL语句

DEPTNO DNAME LOC

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

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERA TIONS BOSTON

60.WRA[P] {OFF|ON}

控制当SQL*Plus选取到的行的宽度大于设置的行宽(LINESIZE的值)时,是否自动折行显示。默认值是ON。

[OFF]:行中多余部分将被截掉。

[ON]:允许自动换到下一行显示。

COLUMN命令的WRAPPED和TRUNCA TED子句的设置会覆盖这里的设置。

SQL> show linesize

linesize 80

SQL> select * from scott.dept where deptno=20;

DEPTNO DNAME

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

20 RESEARCH

SQL> set linesize 15

SQL> select * from scott.dept where deptno=20;

DEPTNO

----------

DNAME

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

20

RESEARCH

<完>

static全局变量与普通的全局变量有什么区别

(1)用于全局变量:外部静态变量,只能在本源文件中被引用,不能被其它源文件所引用。 (2)用于局部变量:局部静态变量,在函数返回后存储单元不释放;下一次调用该函数时,该变量为上次函数返回时的值。 (3)用于函数:内部函数,只能被本源文件中的函数所调用,不能被其它源文件调用。 Static全局变量与普通的全局变量有什么区别: 1.static全局变量只初使化一次,防止在其他文件单元中被引用; 2.static局部变量只被初始化一次,下一次依据上一次结果值; 3.static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 const关键字在C语言中用于声明”只读变量”,其值不可修改,但具有确定的数据类型。C 编译器总是为其分配相应的存储单元。 在C++中,const关键字用于声明常量,C++编译器视具体情况决定是为其分配存储单元还是仅将其作为编译期间的常量。 在C++中,还可以修饰类的成员函数,不改变类中的数据成员. 被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了就终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序: const作用:修饰变量、修饰函数参数、修饰函数返回值三个作用。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 1)const变量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。 2)有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试(不能用指针指向宏)。 因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到调用函数的下一行代码继续执行。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。 而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。 但是宏也有很多的不尽人意的地方。 1)、宏不能访问对象的私有成员。 2)、宏的定义很容易产生二义性。

第7章 常量、变量及存储器类型

第7章常量、变量及存储器类型 7.1 常量 常量是在程序执行过程中其值不能改变的量。常量的数据类型有整型、浮点型、字符型和字符串型等,C51编译器还扩充了一种位(bit)标量。 7.2 在51 MCU DEMO试验板上实现乘法运算:两个乘数分别为常量与变量,其积在数码管上显示(最大显示到50)。 7.2.1 实现方法 先宏定义CONST为常量2,然后定义1个无符号字符型变量x并赋初值1,再定义1个无符号整型变量y用于存放结果,使x的值与CONST相乘,其积存于y中。然后将y的内容送试验板上右侧2个LED数码管进行显示。每0.5秒后x 的值加1,直到26为止。 7.2.2 源程序文件 在D盘建立一个文件目录(CS7-1),然后建立CS7-1.uv2的工程项目,最后建立源程序文件(CS7-1.c)。输入下面的程序: #include //1 unsigned char code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//2 #define CONST 2 //3

/*=====================4===============*/ void delay(unsigned int k) //5 { //6 unsigned int i,j; //7 for(i=0;i

变量的作用域与存储类别&&变量的生存期——天擎国际

变量的作用域与存储类别(变量的作用域——变量的生存期) 变量的作用域 ——局部变量和全局变量 变量的生存期 ——静态存储类别和动态存储类别(注意区别存储类型和函数类型) 变量的作用域 一、局部变量 定义:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效。 二、全局变量 定义:在函数之外定义的变量称为外部变量,或全局变量。它可为本文件中其他函数所共用。有效范围为从定义变量的位置开始到本源文件结束。 注意: 全局变量在程序的全部执行过程中都占有存储单元,而不是仅在需要时才开辟单元。 它使函数的通用性降低,因函数在执行时要依赖于其所在的外部变量。 降低了程序的清晰性。 在同名局部变量作用的范围内,外部变量被“屏蔽”。 变量的生存期

一、动态存储方式与静态存储方式 静态存储:在程序运行期间分配固定的存储空间的方式。 动态存储:在程序运行期间根据需要进行动态的分配存储空间的方式。 静态存储区:存储空间的分配在编译阶段进行,且存于其中的数据对象相对于程序的执行是永久的。 动态存储区:存储空间的分配是在程序的运行过程中进行的。 二、auto变量 调用函数时系统自动分配存储空间,在函数调用结束时自动释放这些存储空间,称这类局部变量为自动变量。 用关键字auto作存储类别的声明。它也可省。 三、用static声明局部变量 静态的 局部的 说明: 静态局部变量属于静态存储类别,在静态存储区内分配单元。在程序整个运行期都不释放。 自动变量属于动态存储类别,在动态存储区内分配单元,函数调用结束后即释放。 静态局部变量在编译时赋初值,以后每次函数调用时不再重新赋初值 ... .......而只是保留上次函 数调用结束时 ......的值。 自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用一次函数重新给一次初值。 静态局部变量,如不赋初值,编译时自动赋初值0 或空字符。 自动变量,如不赋初值,它的值是一个不确定的值。 虽然静态局部变量在函数调用结束后仍然存在,但其他函数不能引用。 一般在下列情况时,使用局部静态变量: 1、需要保留函数上一次调用结束时的值时; 2、如果初始化后,变量只被引用而不改变其值时。 四、register变量 说明: 1、只有局部自动变量和形参可作为register变量。 2、不能定义任意多个寄存器变量。 3、局部静态变量不能定义为寄存器变量。 五、用extern声明外部变量 在一个文件内声明外部变量 例:main( ) { extern A; /*外部变量声明*/ printf(“%d”,A); }

oracle的sqlplus学习笔记

使用SQLPLUS 可以用它运行SQL查询和PL/SQL代码块并接收结果信息 可以发布DBA命令并自动工作 可以启动和关闭数据库 一种创建数据库管理报告的便利方法 设置环境变量 在调用SQLplus前,必须正确设置oracle环境变量, 包括设置ORACLE_SID,ORACLE_HOME和LD_LIBBARY_PATH,有时还须设置NLS_LANG和ORA_NLS11 用CONNECT(conn)命令连接 CONNECT(conn)命令可以以一个不同的用户身份进行连接 例: SQL> conn scott/tiger 已连接。 SQL> connect scott/tiger 已连接。 SQL*Plus登录模式 C:\>sqlplus -h SQL*Plus: Release 10.2.0.1.0 - Production Copyright (c) 1982, 2005, Oracle. All rights reserved. 用法1: sqlplus -H | -V -H 显示SQL*Plus 版本和用法帮助。 -V 显示SQL*Plus 版本。 为: ([/][@] | /) [AS SYSDBA | AS SYSOPER] | /NOLOG 指定数据库帐户用户名, 口令和数据库连接 的连接标识符。如果没有连接 标识符, SQL*Plus 将连接到默认数据库。 AS SYSDBA 和AS SYSOPER 选项是数据库管理 权限。

/NOLOG 选项可启动SQL*Plus 而不连接到 数据库。 为: @|[.] [ ...] 使用将分配给脚本中的替代变量的指定参数 从Web 服务器(URL) 或本地文件系统(filename.ext) 运行指定的SQL*Plus 脚本。 在启动SQL*Plus 并且执行CONNECT 命令后, 将运行站点概要 文件(例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件 (例如, 工作目录中的login.sql)。这些文件 可包含SQL*Plus 命令。 SQLPLUS的执行操作 一条SQL语句由一个分号(;)或一个反斜杠(/)结束 一个PL/SQL块由一个反斜杠(/)结束 可以使用连字符(-)作为语句行的继续字符 例: SQL> select 200 - <==此时sqlplus自动将'-'字符解释成继续字符并发布一条错误信息 > 100 from dual; select 200 100 from dual * 第 1 行出现错误: ORA-00923: 未找到要求的FROM 关键字 SQL> select 200 - - > 100 from dual; 200-100 ---------- 100 退出SQLPlus 在SQL*Plus输入exit(quit)命令正常退出会话,则事务立即被提交.如果不打算提交事务,必须在退出前执行rollback命令,就算autocommit设置值为off也是如此.在使用exit/quit时,会出现以下情况 ?所有未决的更改被回滚或提交; ?用户退出oraclesqlplus会话终止 ?控制权返回到操作系统

C语言变量存储类型

1.存储类型和数据类型。存储类型是针对变量而言的,它规定了变量的存储位置,从而也确认了其作用域和生存期;数据类型也可以针对变量,它规定了变量所占内存空间的大小。 2.C中只有两种存储类型:自动类和静态类。全局变量只能是静态类,而局部变量可以任意。 3.说明变量存储类型的格式:<存储类型> <数据类型> <变量名表>;(存储/数据类型可以交换次序),与存储类别有关的说明符:auto(自动),static(静态),register(寄存器),extern (外部)。 4.计算机内存分三部分:动态存储区(堆栈)、静态存储区、程序代码区。动态存储区用来保存函数调用时的返回地址、自动类别的局部变量等;静态存储区用以存放全局变量及静态类别的局部变量;程序代码区存放各类代码。 5.C++中,可以用static说明"静态函数",其不允许嵌套定义,也不允许外部编译单元中的函数对它进行调用。 ******************************************************************************/ #include /****************************************************************************** 1.对于全局变量可以使用extern和static两种说明符。 2.全局变量的定义只能出现一次,在定义全局变量时,不可使用extern说明符。 3.全局变量的说明(使用extern)可多次出现在需要的地方,说明的作用是扩展该全局变量的作用域,可以对同一变量进行多次extern声明。 4.全局变量的生存期是整个程序的运行时间。 5.全局变量可以进行不同函数之间的传值。 ******************************************************************************/ int i=10; //注意:extern int i=10;是一个具体变量的定义,不是外部变量的声明 int main() { /****************************************************************************** 1.static局部变量只有在第一次执行时才进行初始化,若定义时没有指定初值,编译器自动为其赋0。 2.static变量的初值是在编译时赋予的,而auto量的初值是在程序执行过程中赋予的。 3.static局部变量的生存期是整个程序的运行时间。 ******************************************************************************/ static int i=20; { /****************************************************************************** 1.auto只能用于局部变量的声明,其存储在栈区中。 2.auto局部变量不能保存函数值,当程序执行超出其作用域时,其所占用的内存空间就会被释放。 3.auto局部变量每次进入作用域都要重新分配存储单元。若通过定义语句为auto变量赋初值,那么每进入一次作用域,就为其赋一次初值。 4.进行初始化,若定义时没有指定初值,编译器自动为其赋0,auto局部变量的初值是在程序执行过程中赋予的。 5.auto局部变量可以在各函数之间造成信息隔离,因此允许不同函数中可以使用同名变量,而不会相互影响。

SQLPLUS常用命令列表

SQL*PLUS常用命令列表 ?软件环境: 1、Windows 98 第二版 2、Oracle数据库版本为:Personal Oracle7 Release 7.3.4.0.0 3、Oracle安装路径为:C:\ORAWIN95 ?命令列表: ?假设当前执行命令为:select * from tab; ? ?(a)ppend 添加文本到缓冲区当前行尾 a order by tname 结果:select * from tab order by tname; ? (注:a后面跟2个空格) ?(c)hange/old/new 在当前行用新的文本替换旧的文本c/*/tname 结果:select tname from tab; ?(c)hange/text 从当前行删除文本c/tab 结果:select tname from ; ?del 删除当前行 ?del n 删除第n行 ?(i)nput 文本在当前行之后添加一行 ?(l)ist 显示缓冲区中所有行 ?(l)ist n 显示缓冲区中第 n 行 ?(l)ist m n 显示缓冲区中 m 到 n 行 ?run 执行当前缓冲区的命令 ?/ 执行当前缓冲区的命令 ?r 执行当前缓冲区的命令 ?@文件名运行调入内存的sql文件,如: ? ?SQL> edit s<回车> ?如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件, ?在其中输入“select * from tab;”,存盘退出。 ? ?SQL> @s<回车> ?系统会自动查询当前用户下的所有表、视图、同义词。 ? ?@@文件名在.sql文件中调用令一个.sql文件时使用 ? ?save 文件名将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql ?get 文件名调入存盘的sql文件 ?start 文件名运行调入内存的sql文件 ? ?spool 文件名把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,

static变量三个作用

static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。 (1)先来介绍它的第一条也是最重要的一条:隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。 下面是a.c的内容 char a = 'A'; // global variable void msg() { printf("Hello\n"); } 下面是main.c的内容 int main(void) { extern char a; // extern variable must be declared before use printf("%c ", a); (void)msg(); return 0; } 程序的运行结果是: A Hello 你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a

是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。 如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。 (2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。虽然这种用法不常见,但我还是举一个例子。 #include int fun(void){ static int count = 10; // 事实上此赋值语句从来没有执行过 return count--; } int count = 1; int main(void) { printf("global\t\tlocal static\n"); for(; count <= 10; ++count) printf("%d\t\t%d\n", count, fun()); return 0; }

从内存理解C语言中变量的存储类型

首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图: 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。 数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。 BBS区:存放的是未初始化的全局变量和静态变量。 栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程序员手动管理。 堆区:堆是由malloc()函数分配的内存块,使用free()函数来释放内存,堆的申请释放工作由程序员控制,容易产生内存泄漏。 c语言中的存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区。下面来一一举例看一下这几个存储类型:

1. auto存储类型 auto只能用来标识局部变量的存储类型,对于局部变量,auto是默认的存储类型,不需要显示的指定。因此,auto标识的变量存储在栈区中。示例如下: [cpp]view plaincopy 1#include 2 3int main(void) 4{ 5auto int i=1; //显示指定变量的存储类型 6int j=2; 7 8printf("i=%d\tj=%d\n",i,j); 9 10return 0; 11} 2. extern存储类型 extern用来声明在当前文件中引用在当前项目中的其它文件中定义的全局变量。如果全局变量未被初始化,那么将被存在BBS区中,且在编译时,自动将其值赋值为0,如果已经被初始化,那么就被存在数据区中。全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。 示例如下: [cpp]view plaincopy 12#include 13 14int i=5; //定义全局变量,并初始化 15 16void test(void)

Oracle SQLPlus 常用命令及解释

Oracle SQLPlus 常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

关于static的用法

关于static的用法: 在《Java编程思想》P86页有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是: 方便在没有创建对象的情况下来进行调用(方法/变量)。 很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。 1)static方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。 但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。举个简单的例子:

在上面的代码中,由于print2方法是独立于对象存在的,可以直接用过类名调用。假如说可以在静态方法中访问非静态方法/变量的话,那么如果在main方法中有下面一条语句: MyObject.print2(); 此时对象都没有,str2根本就不存在,所以就会产生矛盾了。同样对于方法也是一样,由于你无法预知在print1方法中是否访问了非静态成员变量,所以也禁止在静态成员方法中访问非静态成员方法。 而对于非静态成员方法,它访问静态成员方法/变量显然是毫无限制的。 因此,如果说想在不创建对象的情况下调用某个方法,就可以将这个方法设置为static。我们最常见的static方法就是main方法,至于为什么main方法必须是static的,现在就很清楚了。因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。 另外记住,即使没有显示地声明为static,类的构造器实际上也是静态方法。 2)static变量

对变量的说明包括数据类型存储类型作用域

对变量的说明包括:数据类型,存储类型,作用域。 第二讲主要是讲数据类型 数据类型:基本数据类型(包括常量和变量),构造数据类型(包括数组类型,结构类型,联合类型),指针类型,空类型(其类型说明符为void)四大类。 整形量包括:整形常量,整型变量。整形常量就是整常熟。使用的整常数有八进制,十进制,十六进制三种。其中八进制整常数必须以0开头。1、八进制整常数是无符号数。2、十六进制整形数前缀0或者是0X。基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。八进制无符号数的表示范围为0~0177777。十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。长整数158L和基本整常数158 在数值上并无区别。但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,只分配2 个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如:358u,0x38Au,235Lu 均为无符号数 整型变量 整型变量可分为以下几类: 1.基本型 类型说明符为int,在内存中占2个字节,其取值为基本整常数。 2.短整量 类型说明符为short int或short'C110F1。所占字节和取值范围均与基本型相同。 3.长整型 类型说明符为long int或long ,在内存中占4个字节,其取值为长整常数。 4.无符号型 类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: (1)无符号基本型类型说明符为unsigned int或unsigned。 (2)无符号短整型类型说明符为unsigned short (3)无符号长整型类型说明符为unsigned long 各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。下表列出了Turbo C中各类整型量所分配的内存字节数及数的表示范围。 类型说明符数的范围分配字节数 int -32768~32767 ■■ short int -32768~32767 ■■ signed int -32768~32767 ■■ unsigned int 0~65535 ■■ long int -2147483648~2147483647■■■■ unsigned long 0~4294967295 ■■■■ 在书写变量说明时,应注意以下几点: 1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 2.最后一个变量名之后必须以“;”号结尾。 3.变量说明必须放在变量使用之前。一般放在函数体的开头部分。 实型量 实型常量:1、十进制形式2、指数形式,实型常量(double)不分单、双精度,都按双精度

变量的作用域和生存期

变量的作用域局部变量和全局变量 在函数和复合语句内定义的变量,只在本函数或复合语句范围内有效(从定义点开始到函数或复合语句结束),他们称为内部变量或局部变量。 在函数之外定义的变量是外部变量,也称为全局变量(或全程变量)。 如果在一个函数中全局变量和局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即他不起作用,此时局部变量是有效的。 全局变量的作用是增加函数间数据联系的渠道。 虽然全局变量有以上优点,但建议不必要时不要使用全局变量,因为全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟单元。 在程序设计时,对模块的划分要求:内聚性强,与其他模块的耦合性弱,这样便于程序的移植,可读性强。 变量的生存期 变量的存储方式分为两种:静态存储方式和动态存储方式。 静态存储方式是指在程序与性能期间由系统在静态存储区分配存储空间的方式,在程序运行器件不释放;而动态存储方式则是在函数调用期间根据需要在动态存储区分配存储空间的方式。这就是变量的存储区别。 Auto----声明自动变量 函数中的形参和在函数中定义的变量都属于此类。在调用这些函数时,系统给这些变量分配存储空间,函数调用结束时就自动释放这些存储空间。因为这类局部变量称为自动变量(auto 变量)。关键字auto作为存储类别的声明。 Auto可省略 Static-----声明静态变量 希望函数中的变量的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就用关键字static指定该局部变量为“静态存储变量”。 对静态局部变量的说明 静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占胴体啊存储区空间而不占静态存储区空间,函数调用结束后即释放。 对静态局部变量是在编译时赋初值的,即只赋初值一次,在以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。自动变量赋初值是在函数调用时进行的。 对静态局部变量来说,编译时自动赋初值0或空字符。而对自动变量来说,如果不赋值则他的值是一个不确定的值。 Registic--声明寄存器变量 这种变量一般不用,只需了解就可以了。 Extern-----声明外部变量的作用范围 如果一个程序中有两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num,否则在进行程序的连接时会出现“重复定义”的错误。正确的做法:在人一个文件中定义外部变量Num,而在另一个文件中用extern对Num作外部变量声明,即extern Num.

SQLPLUS用法大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus 命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer 中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。下面就介绍一下一些常用的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 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。

SQL PLUS 命令大全

一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式

说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机, 重新定位数据文件、重做日志文件。 执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件, 这种方式下可访问数据库中的数据。 4、startup,等于以下三个命令 startup nomount alter database mount alter database open 5、startup restrict 约束方式启动 这种方式能够启动数据库,但只允许具有一定特权的用户访问 非特权用户访问时,会出现以下提示: ERROR: ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式

static变量和static函数的各自的特点

static变量和static函数的各自的特点 static变量大致分为三种用法 一、用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期. 二、用于全局变量,主要作用是限制此全局变量被其他的文件调用. 三、用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象 static 声明的变量. 在C语言中有两方面的特征: 1、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题; D.如果我们需要一个可重入的函数,那么,我们一定

要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数) E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。 函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。 扩展分析:术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。

oracle常用命令大全和环境变量路径

Oracle 命令大全 底部为环境变量配置路径。 1 运行SQLPLUS工具 sqlplus 2 以OS的默认身份连接 / as sysdba 3 显示当前用户名 show user 4 直接进入SQLPLUS命令提示符 sqlplus /nolog 5 在命令提示符以OS身份连接 connect / as sysdba 6 以SYSTEM的身份连接 connect system/xxxxxxx@服务名 7 显示当然用户有哪些表 select * from tab; 8 显示有用户名和帐户的状态 select username,account_status from dba_users; 9 将SCOTT帐号解锁(加锁) alter user scott account unlock(lock); 10 以SCOTT的身份连接并且查看所属表 connect scott/tiger select * from tab; 11 查看EMP的表结构及记录内容 desc emp select empno,ename from emp; 12 以OS的身份登看SGA,共享池,CACHE的信息 connect / as sysdba show sga select name,value/1024/1024 from v$sga; show parameter shared_pool_size select value/1024/1024 from v$parameter where name ='shared_pool_size';

show parameter db_cache_size select value/1024/1024 from v$parameter where name ='db_cache_size'; 13 查看所有含有SIZE的信息 show parameter size bitmap_merge_area_size integer 1048576 create_bitmap_area_size integer 8388608 db_16k_cache_size big integer 0 db_2k_cache_size big integer 0 db_32k_cache_size big integer 0 db_4k_cache_size big integer 0 db_8k_cache_size big integer 0 db_block_size integer 4096 db_cache_size big integer 33554432 db_keep_cache_size big integer 0 db_recycle_cache_size big integer 0 NAME TYPE V ALUE ------------------------------------ ----------- ------------- global_context_pool_size string hash_area_size integer 1048576 java_max_sessionspace_size integer 0 java_pool_size big integer 33554432 large_pool_size big integer 8388608 max_dump_file_size string UNLIMITED object_cache_max_size_percent integer 10 object_cache_optimal_size integer 102400 olap_page_pool_size integer 33554432 oracle_trace_collection_size integer 5242880 parallel_execution_message_size integer 2148 NAME TYPE V ALUE ------------------------------------ ----------- ------------- sga_max_size big integer 143727516 shared_pool_reserved_size big integer 2516582 shared_pool_size big integer 50331648 sort_area_retained_size integer 0 sort_area_size integer 524288 workarea_size_policy string AUTO 14 显示SGA的信息 select * from v$sgastat; POOL NAME BYTES

相关主题
文本预览
相关文档 最新文档