DM8数据库的过程函数的编写主要分为4个部分:过程头部分,声明定义部分,执行部分和异常处理部分。在编写方面,过程和函数的主要区别还是函数可以返回一个值,但是过程没有。下面就从这4个部分来分别介绍过程的编写和一些常用的技巧(循环,条件,过程函数调用,游标等。)
在DM8的过程变异方面,数据库提供了2种基本的编译工具,可视窗口化的DM管理工具和命令行式的dmdbg工具。由于DM管理工具在编译时更简单方便,所以下面都用DM管理工具来演示编译的过程。
目录
1.建立最基本的存储过程
可以选择新建存储过程。
也可以直接在SQL窗口中创建语句。
这样一个最基本的过程就写完了。
2.过程中声明的定义类型
在过程声明时可以定义变量的类型与表字段的类型一致。这样在表字段类型发生变化时,过程不会因为变量不匹配的问题而报错。
先建一个表
把表的字段类型定义成变量的类型
在声明的%ROWTYPE一般用于游标中。
3.条件语句
DM程序里面的条件语句主要有if-then条件语句,case-when条件语句和switch-case-break条件语句。这里介绍if-then条件语句。if-then语句在程序块中出现的频率非常高,其结构主要由if-then-(elseif-then)-(else)-end if组成。下面的过程就是做了一个简单的判断
4.循环语句
DM程序里的循环主要有loop循环,for循环,while循环。这里介绍下本人用的最多的for循环。在sql程序中,循环可以做到很多批量重复性的工作,大大减少了人们的工作量。这里写一个批量往单表中插入数据的循环sql。
跑完过程可以查看表中数据是否插入
5.游标
DM数据库的游标分为动态游标和静态游标。静态游标又分为显示游标和隐式游标。
静态显示游标:需要在声明处定义游标,游标的结果集一旦声明就不发生变化。
静态隐式游标:游标不需要声明,在数据库的DML操作之后都会隐式的生成一个游标。
动态游标:在声明处只需要定义游标名称,游标结果集可以在过程的执行部分进行规定。
此处演示一下静态显示游标的用法。
此处选择昨日的日期跑此过程,查看表中的数据
6.异常处理
异常处理作为数据库程序中非常重要的一环,在程序报错或者异常退出时,能让工作人员及时的定位问题的根本原因。所以,写好异常处理部分可以减少很多维护上的时间和成本。
异常处理分为预定义的异常处理和自定义的异常处理。下面演示一下预定义的异常处理和自定义的异常处理。
首先先建一个日志表,用来存放每次程序执行的日志。
然后写一个完整的异常处理功能来测试一下。
测试找一天不在昨天和今天的日期,程序就会走到抛出自定义异常的地方,随后产看日志表就可以看到程序报错的大致信息。
再在程序中加一个除数为0的错误,测试一下预定义的异常,结果如下表:
更多资讯请上达梦技术社区了解:https://eco.dameng.com