达梦DISQL工具使用
达梦使用SET命令对当前DISQL的环境变量进行设置,并通过SHOW命令来查看当前系统中环境变量的设置情况。
SET命令用法:
语法如下:
SET <system_variable><value>{ <system_variable><value>}
<system_variable>:变量名称,
<value>:属性。
可以同时SET多个环境变量,如:Set heading on timing on。一旦SET之后某个环境变量出错,那么该变量之后的将不再起作用。
1.AUTO
设置当前session是否对修改的数据进行自动提交。
语法如下:
Set auto[commit] <on|off>
ON:表示打开自动提交,所有执行的SQL语句的事务将自动进行提交。
OFF:表示关闭自动提交,所有执行的SQL语句的事务将由用户显式提交,为默认设置。
2.DEFINE
是否使用DEFINE 定义本地变量。
语法如下:
SET DEFINE<c(默认的变量前缀是&)|ON(默认值)|OFF>
c:表示打开DEFINE功能,同时定义前缀变量符号,c 为定义的前缀符号。
ON:表示打开DEFINE功能,使用默认前缀符号&。
OFF:表示不使用DEFINE功能。
示例如下,打开DEFINE功能,并设置#为变量前缀。
3.ECHO
在用START命令执行一个SQL脚本时,是否显示脚本中正在执行的SQL语句。
SET ECHO <ON(默认值)|OFF>
4.FEED
是否显示当前SQL语句查询或修改的总行数。
语法如下:
SET FEED[BACK] <6(默认值)|n|ON|OFF>
n:表示结果大于n行时,才显示结果的总行数。
ON:打开显示开关,使用默认值6。
OFF:关闭显示开关。
5.HEA[DING]
SET HEA[DING] <ON(默认值)|OFF>
当SET HEADING OFF 时,在每页的上面不显示列标题,而是以空白行代替。
6.LINESHOW
LINESHOW 设置是否显示行号。
语法如下:
SET LINESHOW<ON(默认值)|OFF >; 默认为每行输出打印行号。
7.NEWP[AGE]
设置页与页之间的分隔。
语法如下:
SET NEWP[AGE] <1(默认值)|n|NONE>
当SET NEWPAGE 0 时,在每页的开头有一个换号符。
当SET NEWPAGE n 时,在页和页之间隔着n 个空行。
当SET NEWPAGE NONE 时,在页和页之间没有任何间隔。
8.PAGES[IZE]
设置一页有多少行数。
语法如下:
SET PAGES[IZE] <14(默认值)|n>
如果设为0,则所有的输出内容为一页并且不显示列标题。默认值为14。
9.TIMING
显示每个SQL语句花费的执行时间。
语法如下:
SET TIMING<ON(默认值)|OFF>
10.LONG
设置BLOB、CLOB、CHAR、VARCHAR、BINARY、VARBINARY、CLASS等类型一列能显示的最大字节数。
语法如下:
SET LONG <800(默认值)|n>
11.LINESIZE
设置屏幕上一行显示宽度。
SET LINESIZE <screen_length(默认值,屏幕宽度)|n>
12.LOBCOMPLETE
设置LOBCOMPLETE,是否从服务器中全部取出大字段数据。
语法如下:
SET LOBCOMPLETE <OFF(默认值) | ON>
对于大字段数据,是否从服务器全部取出,防止死锁的发生;与显示长度不同,即便是全部取出,也可以只显示一部分。
13.COLSEP
设置列之间的分割符。
语法如下:
SET COLSEP [text]
如果text包含空格或标点符号,请用单引号扩起来。默认为一个空格。
14. TIMING
显示每个SQL 语句花费的执行时间。
语法如下:
SET TIMING<ON(默认值)|OFF>
15.KEEPDATA
是否为数据对齐进行优化,或者保持数据的原始格式。
语法如下:
SET KEEPDATA < ON | OFF(默认值)>
OFF:表示为保证数据的对齐格式,DIsql 对服务器传回的字符串数据,将其中的换 行符、TAB 都转换为空格。缺省为OFF。
ON:表示关闭对齐优化。
16.SCREENBUFSIZE
设置屏幕缓冲区的长度。用来存储屏幕上显示的内容。
语法如下:
SET SCREENBUFSIZE<DEFAULT(20K) | n>
SHOW命令查看环境变量
通过使用SHOW 命令,用户就可以快速而方便的了解到DIsql环境的当前环境变量设置。SHOW可以显示一个或多个变量。显示多个变量时中间加空格,当其中某一变量出错之后,后面的仍会继续显示。
语法如下:
SHOW <system_variable>{<system_variable>}
<system_variable>:环境变量。
示例如下,显示HEADING 和TIMING 两个变量:
帮助HELP:
作用:可以帮助用户查看其他命令的具体用法。用户可以看到其他命令系统显示的内容。
语法如下:
HELP <command>
输出文件SPOOL:
作用:将屏幕显示的内容输出到指定文件
语法如下:
SPOOL {<file> | OFF }
<file>::= <file_path> [CRE[ATE]|REP[LACE]|APP[END]]
<file_path>:指定文件的绝对路径
CRE[ATE]:创建指定的文件,若指定的文件已存在,则报错,默认方式
REP[LACE]:创建指定的文件,若指定的文件已存在,则替换它
APP[END]]:将输出内容追加到指定文件的末尾
OFF:关闭SPOOL 输出
切换到系统命令HOST
作用: 使用HOST命令可以不用退出DIsql就能执行操作系统命令。如果单独执行host,则能够直接从DIsql界面切换到操作系统,之后可使用 EXIT回到 DIsql界面。
语法如下:
HOST [<command>]
获取对象结构信息DESCRIBE
作用:获取表或视图、存储过程、函数、包、记录、类的结构描述。
语法如下:
DESC[RIBE] <table>|<view>|<proc>|<fun>|<pkg>|<record>|<class>
定义本地变量DEFINE
作用:用来定义一个本地变量的替代变量,然后对该变量赋一个CHAR类型的值;或者输出变量的值和类型。
语法如下:
DEF[INE] [<VARIABLE=text>|< VARIABLE >]
DEF[INE] VARIABLE = text:申明一个变量,如果该变量存在,则重新赋值,否则新生成一个变量,并进行赋值。
DEF[INE] VARIABLE:如果该变量存在,则输出特定VARIABLE的值和类型,否则报错。
DEF[INE]:输出DIsql中所有的变量的值和类型。
该命令定义的替代变量在当前的DIsql环境和/NOLOG环境中均可以起作用。DEFINE定义的变量会保存在环境DIsql环境中,可以在SQL语句中使用。默认的变量前缀是&。
DEFINE变量定义为整型,示例如下:
DEFINE在存储函数中的使用:
定义变量C2为表达式,定义为表达式时必须加括号:
DEFINE变量定义为字符型:
引用变量为函数参数:
DEFINE变量定义为日期类型:
查看执行计划
用EXPLAIN命令来查看查询语句的执行计划
设置异常处理方式WHENEVER
作用:用WHENEVER命令可以设置异常处理方式,继续执行或退出 DIsql。
语法如下:
WHENEVER SQLERROR
CONTINUE [ COMMIT | ROLLBACK | NONE ] |
EXIT [ SUCCESS | FAILURE | WARNING | n | <variable>| : <bindvariable> ]
[ COMMIT | ROLLBACK ]
n 和<variable>的返回值受限于操作系统,在不同平台下,会有所不同
查看下一个结果集MORE
作用:当结果集过多,屏幕只能显示一个时,用户可以使用MORE命令切换到下一个结果集。
显示最近执行的SQL语句或者PL/SQL块信息
使用START命令运行脚本:
先建立保存SQL文件/home/dmdba/test.sql
内容为:
使用EDIT命令编辑脚本:
在脚本中使用变量:
DIsql要求传入的参数值个数要与脚本中的变量个数一一对应。比如脚本/dm8/test2.sql中有三个变量&1、&2、&3,则要求传入的参数值也必须是三个。
参数书写要求:
因为参数是原样替换,因此如果SQL语句中字符串要求用单引号,那么定义的参数值也应该包含单引号;另外如果字符串中有特殊字符,需要使用双引号将整个字符串作为一个整体,需要注意的是,如果作为整体的字符串中有双引号作为内容,需要将内容的双引号转义。如果参数值是数字,写法没有特殊要求。如果参数值是字符串,应该用单引号扩起,如果字符串有空格,应该在单引号外面,再加上一个双引号扩起。
4.2 脚本中定义参数值
使用 DEFINE 命令定义变量值,格式:DEFINE 标识符 = 值
如脚本edit /dm8/test4.sql
define n=1
define s=DISQL
select &n from dual;
select '&s' from dual;
4.3 接收用户交互式输入参数值
很多时候,在执行脚本时,我们希望有些信息根据脚本的提示,让用户动态输入。这种情况非常好实现,满足下面两个条件即可。
4.3.1 运行脚本时不带参数
Cat test5.sql
4.3.2 运行时不带参数,需要自己输入值
4.4 使用 PROMPT 命令传递信息
PROMPT 命令会在屏幕上输出一行信息
语法如下:
PROMPT <输出内容>
例如,编写一个查询,要提供用户看到数据的纯文本描述信息。用户就可以使用 PROMPT 命令完成这项工作。将如下脚本存储到名为prompt.sql的文件中:
Cat prompt.sql
prompt 部分ini参数和dminit 建库参数信息(系统值、最小值和最大值);
select top 10 * from v$dm_ini;
更多资讯请上达梦技术社区了解:https://eco.dameng.com