DM SQL是达梦数据库对标准SQL语言的过程化扩展,是专门用于各种环境下对数据库进行访问和开发的语言。
$ disql -S SYSDBA/SYSDBA
create table DMTEST02.T3 as select * from DMHR.CITY;
操作已执行
已用时间: 13.872(毫秒). 执行号:800.
conn dmtest02/dameng123;
select user;
行号 USER()
---------- --------
1 DMTEST02
已用时间: 1.964(毫秒). 执行号:900.
select table_name from user_tables;
行号 TABLE_NAME
---------- ----------
1 T3
已用时间: 98.624(毫秒). 执行号:901.
select * from T3;
行号 CITY_ID CITY_NAME REGION_ID
---------- ------- --------- -----------
1 BJ 北京 1
2 SJZ 石家庄 1
3 SH 上海 2
4 NJ 南京 2
5 GZ 广州 3
6 HK 海口 3
7 WH 武汉 4
8 CS 长沙 4
9 SY 沈阳 5
10 XA 西安 6
11 CD 成都 7
11 rows got
已用时间: 0.604(毫秒). 执行号:902.
--开启打印输出
set serveroutput on;
show serveroutput;
SERVEROUTPUT ON SIZE UNLIMITED FORMAT WORD_WRAPPED
示例如下:
DECLARE--声明部分可以定义变量、常量等
v_sy varchar(5);
begin
select CITY_NAME into v_sy from T3 where CITY_ID='SY';--执行部分进行业务逻辑处理
dbms_output.put_line('小沈阳的家乡在'||v_sy);
EXCEPTION--异常处理部分进行程序错误处理
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('this is not such a city_name');
end;
/
小沈阳的家乡在沈阳
DMSQL 过程已成功完成
已用时间: 0.243(毫秒). 执行号:905.
在该程序中,SELECT语句是非过程化的SQL语言,完成对数据库的操作;而变量的声明、IF语句
的逻辑判断以及异常处理部分则是过程化语言的应用。PL/SQL程序中引入了变量、控制结构、函数、过程、
包、触发器等一系列过程化结构,为进行复杂的数据库应用程序开发提供了可能。
PL/SQL允许声明变量和常量,并在表达式中使用变量和常量。在程序运行时,可以修改变量的值,但常量的值不能修改。
DECLARE
v_num CONSTANT NUMBER :=100;
begin
dbms_output.put_line('your score is '||v_num);
end;
/
your score is 100
DMSQL 过程已成功完成
--常量无法改变
SQL> DECLARE
2 v_num CONSTANT NUMBER :=200;
3
4 begin
5 v_num:= 100;
6 dbms_output.put_line('your score is '||v_num);
7 end;
8 /
DECLARE
v_num CONSTANT NUMBER :=200;
begin
v_num:= 100;
dbms_output.put_line('your score is '||v_num);
end;
第5 行附近出现错误[-4519]:常量不能被赋值.
已用时间: 0.309(毫秒). 执行号:0.
SQL> DECLARE
2 v_num NUMBER;
3
4 begin
5 v_num:= 200;
6 v_num:= 100;
7 dbms_output.put_line('your score is '||v_num);
8 end;
9 /
your score is 100
DMSQL 过程已成功完成
已用时间: 0.608(毫秒). 执行号:1004.
SQL> insert into t3 values('wht',"what's",12);
insert into t3 values('wht',"what's",12);
第1 行附近出现错误[-2120]:无效的变量名[what's].
--需要把用单引号把单引号转义
SQL> insert into t3 values('wht','what''s',12);
影响行数 1
已用时间: 0.438(毫秒). 执行号:1105.
SQL> select * from t3;
行号 CITY_ID CITY_NAME REGION_ID
---------- ------- --------- -----------
1 BJ 北京 1
2 SJZ 石家庄 1
3 SH 上海 2
4 NJ 南京 2
5 GZ 广州 3
6 HK 海口 3
7 WH 武汉 4
8 CS 长沙 4
9 SY 沈阳 5
10 XA 西安 6
11 CD 成都 7
12 HRB 哈尔滨 10
13 wht what's 12
--也可以用q[]转义
SQL> insert into t3 values('wt',q'[what's]',13);
影响行数 1
已用时间: 0.502(毫秒). 执行号:1107.
SQL> select * from t3;
行号 CITY_ID CITY_NAME REGION_ID
---------- ------- --------- -----------
1 BJ 北京 1
2 SJZ 石家庄 1
3 SH 上海 2
4 NJ 南京 2
5 GZ 广州 3
6 HK 海口 3
7 WH 武汉 4
8 CS 长沙 4
9 SY 沈阳 5
10 XA 西安 6
11 CD 成都 7
12 HRB 哈尔滨 10
13 wht what's 12
14 wt what's 13
declare
i int:=1;
begin
loop
i:=i+1;
INSERT INTO T1(id, name) VALUES (i, 'c');
exit when i=1000;
end loop;
end;
/
BEGIN
FOR I IN 1..10000 LOOP
INSERT INTO TEST.T1 VALUES(I,'A'||I);
COMMIT;
END LOOP;
COMMIT;
END;
/
达梦社区技术https://eco.dameng.com
文章
阅读量
获赞