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

【干货分享】DISQL使用解析3

达梦大数据 2019-10-25
863

达梦数据库DISQL工具使用解析之---

                 如何在DISQL中使用脚本


我们前两期讲了DISQL环境变量的设置和DISQL的常用命令。今天我们再来讲一下如何在DISQL中使用脚本,这样用户不必在每次使用数据库的时候都编写常用的SQL语句和PL/SQL程序块,而是可将它们保存到称为脚本的文件中。这些脚本专门为反复执行的各种任务而设计。
我们的测试环境为:
操作系统:中标麒麟6
数据库版本:DM8.1



1.编写脚本

我们来编写一个简单的脚本例子,建立保存为 dm8/test.sql。

Cat  /dm8/test.sql

create table t01(c1 varchar(100), c2 varchar(100));

begin

for  i  in 1..10  loop

insert into t01 values('a'||i, 'b'||i);

end loop;

end;

/


2.使用START命令运行脚本
在进入 disql 之后再执行start命令运行脚本。
例如:./disql SYSDBA/dameng123
Sql>start dm8/test.sql


注意:DISQL 在运行完脚本后会自动执行一个提交动作。

3.使用EDIT命令编辑脚本

SQL>EDIT D: est.sql 或 SQL>edit



4.如何在脚本中使用变量
替换变量主要用来进行SQL、PLSQL与用户的交互,可以运行时输入,也可提前输入。
替换变量前带有一个前缀标志符(默认是&),DIsql 在命令中遇到替换变量时,用真实值去代替,相当于 c 语言中的宏定义。
真实值来源于三个地方:

• 脚本参数带入

• 脚本中直接定义

• 用户动态输入

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

4.1 脚本带参数值,参数名必须是数

• 变量名是数字

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

如脚本 dm8/test2.sql:

create table t1(id int);

select * from dual where id = &1;

select * from dual where id = &2;

select * from dual where id = &3;


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



• 参数书写要求

因为参数是原样替换,因此如果SQL语句中字符串要求用单引号,那么定义的参数值也应该包含单引号;另外如果字符串中有特殊字符,需要使用双引号将整个字符串作为一个整体,需要注意的是,如果作为整体的字符串中有双引号作为内容,需要将内容的双引号转义。如果参数值是数字,写法没有特殊要求。如果参数值是字符串,应该用单引号扩起,如果字符串有空格,应该在单引号外面,再加上一个双引号扩起。如脚本/dm8/test3.sql

create table test(a varchar);

insert into test values('hello');

insert into test values('hello world');
Commit;
select * from test where a = &1;
select * from test where a = &2;



注意参数的写法,执行语句如下:

SQL>start dm8/test3.sql 'hello' "'hello world'"



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 dm8/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;
SQL> start dm8/prompt.sql



Cat  /dm8/prompt.sql



今天的分享就到这里了。到目前为止,我们的DISQL解析系列就到这里了,谢谢大家的关注,希望这个系列可以帮助到大家。敬请期待我们下期更精彩的分享!




往期精彩

1

【干货分享】达梦DISQL工具使用解析之-  DISQL环境变量设置

2

【干货分享】DISQL使用解析2 

3

【干货分享】达梦数据库索引建立使用小技巧


最后修改时间:2020-06-12 18:06:47
文章转载自达梦大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论