达梦数据库如何在disql中使用脚本

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
select &x from dual;

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

猜你喜欢

转载自blog.csdn.net/qq_35273918/article/details/129934212