DM8达梦数据库存储过程函数使用

       DM8数据库的过程函数的编写主要分为4个部分:过程头部分,声明定义部分,执行部分和异常处理部分。在编写方面,过程和函数的主要区别还是函数可以返回一个值,但是过程没有。下面就从这4个部分来分别介绍过程的编写和一些常用的技巧(循环,条件,过程函数调用,游标等。)

        在DM8的过程变异方面,数据库提供了2种基本的编译工具,可视窗口化的DM管理工具和命令行式的dmdbg工具。由于DM管理工具在编译时更简单方便,所以下面都用DM管理工具来演示编译的过程。

目录

1.建立最基本的存储过程

2.过程中声明的定义类型

3.条件语句 

4.循环语句

5.游标

6.异常处理


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

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
dm数据库和MySQL数据库是两种不同的关系型数据库管理系统(RDBMS)。它们在以下几个方面有一些差异: 1. 历史和开发者:DM数据库是由中国科学院计算技术研究所开发的,而MySQL是由瑞典公司MySQL AB开发的。 2. 数据类型:DM数据库支持更多的数据类型,包括位图索引、空间数据类型、JSON数据类型等,而MySQL的数据类型相对较少。 3. 存储引擎:DM数据库使用自家开发的存储引擎,支持事务处理、并发控制和ACID(原子性、一致性、隔离性和持久性)特性。而MySQL具有多个存储引擎可供选择,如InnoDB、MyISAM等。 4. 分区表功能:DM数据库提供了分区表功能,可以将大表分割为更小的片段,以提高查询性能和管理效率。MySQL在某些存储引擎上也支持分区表,但不是所有存储引擎都支持。 5. SQL语法:虽然两者都符合SQL标准,但在某些方面存在细微差异,如DM数据库对日期和时间函数的支持更丰富。 6. 性能和扩展性:DM数据库在处理大规模并发访问时表现较好,并且支持分布式数据库集群。MySQL在小规模应用和简单查询方面表现良好,但在处理大规模数据和高并发负载时可能需要更多的优化和调整。 总的来说,DM数据库和MySQL数据库都是强大的关系型数据库管理系统,适用于不同的应用场景和需求。选择哪个取决于具体的业务需求、性能要求和开发团队的偏好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值