注册
达梦数据库学习07:达梦数据库DM SQL01
专栏/技术分享/ 文章详情 /

达梦数据库学习07:达梦数据库DM SQL01

Hi70KG 2023/08/07 2561 1 0
摘要

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

批量插入01

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

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服