暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库DIsql 中的系统环境变量整理

原创 小小星月明 2022-07-31
2795

DIsql 命令的快速参考 

序号      变量名称    属性    用途 

1 AUTO[COMMIT] <ON|OFF(默认值)> 设置自动提交

ON:表示打开自动提交,所有执行的 SQL 语句的事务将自动进行提交。 

OFF:表示关闭自动提交,所有执行的 SQL 语句的事务将由用户显式提交,为默认设 

 

2 DEFINE <c(默认的变量前缀是&)|ON(默认值) |OFF> 定义本地变量 

c:表示打开 DEFINE 功能,同时定义前缀变量符号,c 为定义的前缀符号。 

ON:表示打开 DEFINE 功能,使用默认前缀符号&。 

OFF:表示不使用 DEFINE 功能。

 

3 ECHO  <ON(默认值)|OFF> 显示脚本中正在执行的 SQL 语句 

 

4 FEED[BACK] <6(默认值)|n|ON|OFF> 显示当前 SQL 语句查询或修改 的行数 

n:表示结果大于 n 行时,才显示结果的总行数。 

ON:打开显示开关,使用默认值 6。 

OFF:关闭显示开关。

 

5 HEA[DING] <ON(默认值)|OFF>  显示列标题 

当 SET HEADING OFF 时,在每页的上面不显示列标题,而是以空白行代替。

 

6 LINESHOW <ON 默认值|OFF> 显示行号 

 

7 NEWP[AGE] <1(默认值)|n|NONE>  设置页与页之间的分隔 

SET NEWPAGE 0 时,在每页的开头有一个换号符。 

当 SET NEWPAGE n 时,在页和页之间隔着 n 个空行。 

当 SET NEWPAGE NONE 时,在页和页之间没有任何间隔。

 

8 PAGES[IZE] <14(默认值)|n>  设置一页有多少行数 

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

 

9 TIMING <ON(默认值)|OFF> 显示每个 SQL 语句花费的执行时间

 

10 TIME <ON|OFF(默认值)> 显示系统的当前时间 

 

11 VER[IFY] <ON(默认值)|OFF> 列出环境变量被替换前、后的控制命令文本 

 

12 LONG <800(默认值)|n> 设置大字段类型显示的最大字节数 

设置 BLOB、CLOB、CHAR、VARCHAR、BINARY、VARBINARY、CLASS 等类型一列能显示的最大字节数。

 

13 LINESIZE <screem_length(默认值,屏幕宽度)|n> 设置屏幕上一行显示宽度 

 

14 SERVEROUT[PUT] <ON | OFF(默认值)> [SIZE <20000(默认值)|n>] 

[FOR[MAT] <WRA[PPED]| WOR[D_WRAPPED](默认值)| TRU[NCATED]>] 

在块中有打印信息时,是否打印,以及打印的格式 

ON/OFF:是否打印。 

SIZE:打印的最大长度。 

WORD_WRAPPED:按照单词分隔。 

TRUNCATED:单词被截断。 

FORMAT:按照服务器返回的显示,不做格式化

 

15 SCREENBUFSIZE <DEFAULT(20K) | n> 设置屏幕缓冲区的长度 

 

16 CHAR_CODE <GBK | UTF8 | DEFAULT (默认值,操作系统的编码方式)> 设置 SQL 语句的编码方式 

 

17 CURSOR <STATIC | FORWARDONLY (默认值)|DEFAULT> 设置 DPI 语句句柄中游标的类型 

 

 

18 AUTOTRACE <OFF(默认值) | NL | INDEX |ON|TRACE> 设置执行计划和统计信息的跟踪 

当 SET AUTOTRACE OFF 时,停止 AUTOTRACE 功能,常规执行语句。 

当 SET AUTOTRACE NL 时,开启 AUTOTRACE 功能,不执行语句,如果执行计划中有嵌套循环操作,那么打印 NL 操作符的内容。 

当 SET AUTOTRACE INDEX(或者 ON)时,开启 AUTOTRACE 功能,不执行语句,如果有表扫描,那么打印执行计划中表扫描的方式、表名和索引。 

当 SET AUTOTRACE TRACE 时,开启 AUTOTRACE 功能,执行语句,打印执行计划。 

此功能与服务器 EXPLAIN 语句的区别在于,EXPLAIN 只生成执行计划,并不会真正执行SQL 语句,因此产生的执行计划有可能不准。而 TRACE 获得的执行计划,是服务器实际执行的计划。

 

19 DESCRIBE [DEPTH <1(默认值) | n | ALL>] [LINE[NUM] <ON | OFF(默认值)>] [INDENT <ON | OFF(默认值)>] 设置 DESCRIBE 的显示方式 

DEPTH:结构信息显示至第 N 层,默认只显示第 1 层。范围是 1-40。当设置为 ALL时,DEPTH 为 40。 

LINENUM:是否显示对象行号,成员显示父亲的行号。 

INDENT:当对象的类型是复合类型时,是否通过缩进的方式显示成员信息。

 

20 TRIMS[POOL] <OFF(默认值)| ON> 设置 spool 文件中每行的结尾空格 

 

21 LOBCOMPLETE <OFF(默认值)| ON> 设置大字段数据是否从服务器全部取出 

对于大字段数据,是否从服务器全部取出,防止死锁的发生;与显示长度不同,即便是 

全部取出,也可以只显示一部分。

 

22 COLSEP [text] 设置列之间的分割符。缺省为一个空格

如果 text 包含空格或标点符号,请用单引号扩起来。默认为一个空格。

 

23 KEEPDATA <ON|OFF(默认值)> 是否为数据对齐进行优化,或者 

保持数据的原始格式。ON 不优化,OFF 对齐优化。缺省为OFF 

 

24 AUTORECONN <ON|OFF(默认值)> 是否自动重新连接。ON 是,OFF 否。缺省为 OFF 

是否进行自动重新连接,设置为 ON 时,使用上次连接的属性设置进行自动重连,缺省 

为 ON

 

25 NEST_COMMENT <ON|OFF(默认值)> 是否支持多行注释嵌套。ON 是,OFF 否。缺省为 OFF 

Disql 中支持注释,注释必须由起始符号“/*”开始,由结 

束符号“*/”结束。注释内容还可以嵌套其他的注释,嵌套的注释也同样需由“/*”开始 

和“*/”结束

 

26 NULL_ASNULL <ON|OFF(默认值)> 在绑定参数输入时,是否将输入 

的 NULL 当作数据库的 null 处理。ON 是,OFF 否。缺省为OFF 

 

27 CMD_EXEC <ON(默认值)|OFF> 是否执行文件中“/”命令。ON 

是,OFF 否。缺省为 ON 

 

28 CHARDEL [text] 设置字符串的限定符。缺省为一个空格 

 

29 FLOAT_SHOW <0(默认值)| float_length> 设置 FLOAT、DOUBLE 类型按科学计数法显示的分界长度。默认为 0,代表全部按科学计数法 

显示 

当数据直接打印长度超过 float_length 时以科学计数法显示,否则直接显示。float_length 取值范围为 0~350,为 0 代表总是以科学计数法显示。

 

3.2 SET 命令用法 

SET 命令用于设置 DIsql 系统环境变量。 

语法如下: 

SET <system_variable><value>{ <system_variable><value>}

<system_variable>:变量名称,参考 3.1 节。 

<value>:属性。 

可以同时 SET 多个环境变量,如:Set heading on timing on。一旦 SET 之后某个环境变量出错,那么该变量之后的将不再起作用

 

3.4 SHOW 命令查看环境变量

 

通过使用 SHOW 命令,用户就可以快速而方便的了解到 DIsql 环境的当前环境变量设置。 

SHOW 可以显示一个或多个变量。显示多个变量时中间加空格,当其中某一变量出错之后,后面的仍会继续显示。 

语法如下: 

SHOW <system_variable>{<system_variable>} 

<system_variable>:环境变量。

Eg:

SQL> show heading timing

 

4.5.2 COLUMN 

定义一个本地列或表达式。 

语法如下: 

COL[UMN] [<column | expr> [<option>]] 

<option> ::= NEW_VALUE variable 

COL[UMN]:列举出所有的 COLUMN 变量信息。 

COL[UMN] column | expr:列举出某个 column 或 expr,如果存在,则输出信息,否则报错。 

COL[UMN] column | expr option:option 目前仅支持 NEW_VALUE,表示该column|expr 的值,同时作为变量存在。但如果该变量未赋值,通过 DEFINE 查询时,不会显示该变量。 

查询结果的最后一个值赋给本地变量。 

示例如下: 

SQL> COLUMN CVAR NEW_VALUE DVAR 

SQL> SELECT CUSTOMERID CVAR FROM SALES.CUSTOMER; 

行号 CVAR 

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

1 1

 

4.6 查看执行计划 EXPLAIN 

用 EXPLAIN 命令来查看查询语句的执行计划。 

语法如下: 

EXPLAIN <sql_clause> 

<sql_clause>请参考《DM8_SQL 语言使用手册》。 

示例如下: 

SQL>EXPLAIN select count(*) from sysobjects;

 

4.7 设置异常处理方式 WHENEVER 

用 WHENEVER 命令可以设置异常处理方式,继续执行或退出 DIsql。 

语法如下: 

WHENEVER SQLERROR 

CONTINUE [ COMMIT | ROLLBACK | NONE ] | EXIT [ SUCCESS | FAILURE | WARNING | n | <variable> | : <bindvariable> ] [ COMMIT | ROLLBACK ] 

n 和<variable>的返回值受限于操作系统,在不同平台下,会有所不同,例如:UNIX 系统只用一个字节来存 code,所以返回值的范围只在 0-255 之间。 

示例如下: 

SQL>whenever sqlerror exit 1 

SQL>select c1 from dual; 

select c1 from dual; 

第 1 行附近出现错误[-2111]:无效的列名[C1]. 

--windows 系统下,输入 echo %ERRORLEVEL%,查看返回值为:1 

--linux 系统下,输入 echo $?,查看返回值为:1 

 

4.8 查看下一个结果集 MORE 

当结果集过多,屏幕只能显示一个时,用户可以使用 MORE 命令切换到下一个结果集。 

MORE 

例如,当执行如下语句时,用户想查看更多的结果集,可以使用 MORE 命令。 

begin 

select top 10 * from v$dm_ini; 

select top 10 * from sysobjects; 

select * from dual; 

end 

 

4.9 显示 SQL 语句或块信息 LIST 

显示最近执行的 SQL 语句或者 PL/SQL 块信息。不显示 DIsql 命令。 

L[IST]或者;

 

4.10 插入大对象数据 

当插入语句中包含大对象数据文件时,使用@。 

@<插入语句> 

<插入语句>,请参考《DM8_SQL 语言使用手册》,其中大数据的插入值格式为: 

@'path' 

示例如下: 

例如,在 test 表中插入大对象 e:\DSC_1663.jpg。 

create table test(a int,b image); 

@insert into testvalues(1,@'e:\DSC_1663.jpg');

 

4.11 缓存清理 CLEAR 

清理指定操作本地缓存。 

语法如下: 

CL[EAR] <option> 

<option> ::= [COL[UMNS] | SQL | SCR[EEN] | BUFF[ER]] 

COL[UMNS]:清理所有的 COLUMN 变量信息。 

SQL:清理本地 SQL 缓存信息。 

SCR[EEN]:清理 DIsql 终端屏幕信息。 

BUFF[ER]:同 SQL 功能一样,清理本地 SQL 缓存信息。 

示例如下: 

SQL> COLUMN CVAR NEW_VALUE DVAR 

SQL> col 

COLUMN CVAR ON 

NEW_VALUE DVAR 

SQL> cl col 

columns 已清除 

SQL> col 

SQL>

 

5.2使用 START 命令运行脚本 

<`运行脚本>中的符号`位于键盘第二排左起第一个。 

如果在 LINUX 环境下使用<`运行脚本>,则符号`需要加\或'进行转义。 例如:./disql SYSDBA/SYSDBA\`/dev/test.sql 

1.启动 DIsql 时,运行脚本。 

disql SYSDBA/SYSDBA `D:\test.sql

2. 进入 DIsql 之后,运行脚本。 

SQL>start D:\test.sql 或 SQL>`D:\test.sql

 

5.3 使用 EDIT 命令编辑脚本 

DIsql 中使用 EDIT 命令来编辑指定的脚本文件。 

语法如下: 

ED[IT][<file_name>] 

<file_name>:指定待编辑的脚本文件。 

如果指定文件不存在,则创建该文件。 

如果省略文件<file_name>,则只会修改缓冲区中的最后一条 SQL 语句。DIsql 自动打开系统缺省的文本编辑器(WINDOWS 下使用 notepad),复制缓冲区中最后一条SQL 语句到文本中,这时用户可以对其中的内容进行编辑。修改完成之前,DIsql 一直处于等待状态。修改完毕,保存文件后,被修改的内容就会被写入缓存区。这对于修改错误命令很方便。当操作系统为 LINUX 或 UNIX 时,使用 vi 进行编辑。 

示例如下: 

SQL>EDIT D:\test.sql 或 SQL>edit

 

5.4 如何在脚本中使用变量 

替换变量主要用来进行 SQL、PLSQL 与用户的交互,可以运行时输入,也可提前输入。 

替换变量前带有一个前缀标志符(默认是&),DIsql 在命令中遇到替换变量时,用真实值去代替,相当于 c 语言中的宏定义。真实值来源于三个地方: 

1.脚本参数带入 

2.脚本中直接定义 

3.用户动态输入 

DIsql 中根据 SET DEFINE 命令开启本地变量功能并定义变量前缀符号。默认符号&作为变量的前缀。详细用法请查看 DEFINE 命令。 

5.4.1 脚本带参数值 

脚本带参数值,参数名必须是数字。 

5.4.1.1 变量名是数字 

在脚本中通过&n 来引用参数,n 为 1 表示为第一个参数,2 表示第二个参数,依次类推。如脚本 D:\test.sql: 

select * from dual where id = &1; 

select * from dual where id = &2; 

select * from dual where id = &3; 

DIsql 要求传入的参数值个数要与脚本中的变量个数一一对应。比如脚本D:\test.sql 中有三个变量&1、&2、&3,则要求传入的参数值也必须是三个。如果传入参数值个数不匹配,如 n 为 3,但执行时只带了 2 个参数,DIsql 就会在屏幕上提示输入参数。 

 

5.4.2 脚本中定义参数值 

使用 DEFINE 命令定义变量值,格式:DEFINE 标识符 = 值。 

如脚本 D:\test.sql: 

define n=1 

define s=DIsql 

select &n from dual; 

select '&s' from dual; 

如果变量没有定义,那么在通过&引用时,DIsql 会提示输入。

 

5.4.3 接收用户交互式输入参数值 

很多时候,在执行脚本时,我们希望有些信息根据脚本的提示,让用户动态输入。这种情况非常好实现,满足下面两个条件即可。 

1. 运行脚本时不带参数 

50DM8_DIsql 使用手册 

2. 脚本中不定义参数 

如脚本 D:\test.sql: 

select &x from dual; 

 

5.5 使用 PROMPT 命令传递信息 

PROMPT 命令会在屏幕上输出一行信息。这非常有助于在存储脚本中向用户传送信息。 

语法如下: 

PROMPT <输出内容> 

例如,编写一个查询,要提供用户看到数据的纯文本描述信息。用户就可以使用PROMPT 命令完成这项工作。将如下脚本存储到名为 prompt.sql 的文件中: 

 

prompt 部分 ini 参数和 dminit 建库参数信息(系统值、最小值和最大值); 

select top 10 * from v$dm_ini; 

 

执行脚本: 

SQL> `f:\prompt.sql 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论