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

article/2025/11/5 22:21:09

       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


http://chatgpt.dhexx.cn/article/BSNLhYMU.shtml

相关文章

数据库:存储过程实验

一、实验目的及要求 目的 掌握存储过程的编写与调用 要求 掌握存储过程的编写;掌握存储过程的调用 二、实验条件 安装有SQL Server2014数据库的计算机 三、实验内容 使用事务、锁和游标;编写和使用存储过程;使用触发器 四、实验结果…

达梦数据库存储过程注意事项

引言:达梦数据库是一款国产数据库,在语法使用和函数方面和MySQL,Oracle有着很多相似的地方。但是也有一 些细微的区别。 1、先看一下达梦数据库的存储过程模板: CREATE OR REPLACE FUNCTION getName() AS OR IS DECLARE ... BEGI…

MySQL数据库-存储过程详解

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批件,虽然它们的作用不仅限于批处理。在我看来, 存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创建表,更新数据&#xff0c…

EXTJS5 入门指南

EXTJS5带领EXTJS步入了新的时代,Ext JS 5已经不再支持IE6、IE7和其他旧版本的浏览器了,这样可以显著减少跨整个框架的逻辑和样式设置。再加上额外的优化,Ext JS 5已经为企业级的Web应用程序迈出了惊人的一步。 EXTJS5不在和EXTJS4一样&#x…

ExtJS-入门(转载自http://www.blogjava.net/puras/archive)

2010 - 01 - 13 缩略显示 ExtJS-入门(转载自http://www.blogjava.net/puras/archive) 文章分类:Web前端 在ExtJS里最常用的,应该就是Ext.onReady这个方法了, 而且它也可能是你学习ExtJS所接触的第一个方法,这个方法在当前的DOM加载完毕后自动调用,保证…

Ext JS 6学习文档–第1章–ExtJS入门指南

Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少。google 搜索资料时找到了一本国外牛人写的关于 ExtJS 6 的电子书 [Ext JS 6 By Example]。这份资料在 PACKT 上卖 35.99 刀的,当然了万…

Extjs——初步学习

最近在系统学习Extjs框架,从刚一开始接触Extjs到现在发现对Extjs越来越喜欢了。刚开始只是想在页面上实现一个展示大量图片的功能,就像在线订餐系统展示菜单的效果那样,每幅图片上都有一些必要的信息、动作、链接等。效果如下图: …

Extjs基础(一)

1.1基础学习 说明: 本示例的所有代码均在extjs6.2版本上测试通过,学习内容来源于官方文档和自己的一些见解。 1.1.1window组件 简单的一个window面板: title: 窗口标题,height: 220, //可以使用百分比width: 220, html: 内容部分,resizable: true, //…

ExtJS基础入门

公司需要用ExtJS搭建系统框架,然后,这个很老了,没有用过 。 开始进行时候一脸懵逼,因为搜索了相关的知识,面临如下问题: 1.版本太多,从一到六,不知从何入手 2.提供的教程和视频都…

extjs初学者教程

layout 1.面板 (1)类结构 Ext.Base Ext.AbstractComponent Ext.Component Ext.container.AbstractContainer Ext.container.Container Ext.panel.AbstractPanel …

ext.js入门

序言:extjs 是一种OOP语言,可以按照学习Java 的过程来进行学习,可以类比 Java中的图像界面JWT来进行学习。 工具 这些是sencha提供的用于Ext JS应用程序开发的工具,主要用于生产级别。Sencha Cmd Sencha CMD是一个提供Ext JS代码…

EXTJS入门教程及其框架搭建

EXTJS是一个兼容AJAX的前台WEB UI的框架,在普通的HTML文件的 BODY 元素中无须写任何HTML代码,就能产生相应的表格等元素。 原创不易,转载请注明出处:EXTJS入门教程及其框架搭建 代码下载地址:http://www.zuidaima.com/share/17244…

EXTJS详细教程

布局和容器 普通布局 Ext.create(Ext.panel.Panel, {renderTo: Ext.getBody(),width: 400,height: 300,title: Container Panel,items: [{xtype: panel,title: Child Panel 1,height: 100,width: 75%}, {xtype: panel,title: Child Panel 2,height: 100,width: 75%}] });列布…

国嵌视频,买了就是坑

国嵌买视频的,更新慢,谁敢抱怨,踢你,锁你账号,真无语,安卓没录完,3月拖到6月,拖到10月,引起公愤了,就说送路由视频,结果路由视频还没录呢&#xf…

【我爱嵌入式】

童鞋们 自动化嵌入式复习 总结了期末考试简答题的内容 第一章 嵌入式的定义 以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统主要由嵌入式微处理器、外围硬件设备…

嵌入式教程:什么是嵌入式?

每每有小白接触嵌入式时,总认为是装修风格的一种,类似嵌入式壁炉之类的,而一些有过了 解的朋友可能会以为嵌入式教程就是教单片机的,学习后才发现单片机只是基础。 简单来说,嵌入式就是需要嵌入某些东西里面&#xff…

国嵌视频学习笔记---linux内核开发1

一、linux内核简介 1.linux系统由两部分组成:内核空间和用户空间。 2.用户空间包括:用户应用程序和C库 3.内核空间包括:系统调用接口、内核和体系结构相关代码。 4.ARM处理器7种工作模式:用户模式,快速中断模式、外…

国嵌学习——ARM

从NOR启动:在片选0位置放置的是2M的nor flash,在片选6位置放置的是内存0x30000000 ARM工作模式 ARM处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。应用程序运行在用户模式下,当处理器运行在用户模式下时&…

国嵌C语言(6-10)

国嵌六: 空结构体的内存: struct D {}; int main(void) {struct D d1;struct D d2;printf("%d\n",sizeof(struct D));printf("%d,%0x\n",sizeof(d1),&d1);printf("%d,%0x\n",sizeof(d2),&d2); } 0 0&#xff…

【嵌入式】

一.进制转换:分别有以下前缀,2进制常用0B表示,8进制常用0O,16进制常用0X表示;1位八进制数等于3位二进制数,1位十六进制数等于4位二进制数,在二进制转化为八,十六进制数时。如果位数不…