DMSQL程序设计相关

本文介绍了DMSQL程序设计,包括存储过程、存储函数、客户端DMSQL和控制结构。详细阐述了DMSQL中的IF结构、CASE、SWITCH、LOOP、WHILE、FOR、REPEAT等循环控制,以及EXIT和CONTINUE的使用。此外,还讨论了GOTO和NULL语句在程序中的作用。
摘要由CSDN通过智能技术生成

1. 基本内容

        DMSQL 程序是达梦数据库对标准 SQL 语言的扩展,是一种过程化 SQL 语言。

        在DMSQL 程序中,包括一整套数据类型、条件结构、循环结构和异常处理结构等,DMSQL 程 序中可以执行 SQL 语句,SQL 语句中也可以使用 DMSQL 函数。

        DMSQL 程序可以分为存储模块和客户端 DMSQL 程序两类。 用户可以使用 DMSQL 程序语言创建过程或函数,称为存储过程和存储函数。存储过程和存储函数统称 为存储模块。 客户端 DMSQL 程序可以实现的功能与存储模块一致,不同的是客户端 DMSQL 程序并 不创建一个具体的数据库对象。其处理方法为 DM 数据库服务器在预编译阶段将客户端 DMSQL 程序转化为虚过程。虚过程不需要存储,创建后立即执行,当执行的语句释放时, 虚过程对象也一同被释放。客户端 DMSQL 程序只从语法上和存储模块兼容,完成和存储模 块一样的功能,是一种编程手段。

2. 存储过程

        关于DM建立存储过程的语法,结构描述较为复杂,初学者容易掌握不住重点,一头扎进文字中,最好的方法是在运用中了解,由浅及深,很多学习过程都是如此。

  1. 先看一个简单的例子,看看基础的存储过程能完成什么任务:
    CREATE PROCEDURE pcd_1(a IN OUT INT) AS
    DECLARE b INT:=20;
    BEGIN
    a:=a+b;
    PRINT a;
    END;
    存储过程pcd_1把 将一个输入参数进行处理后输出。存储过程名之后的括号内为输入/输出参数,类型可以为IN、和IN OUT(OUT IN)。AS之后的语句为模块体,或称为语句块。DECLARE后为变量的声明(可以省略DECLARE),从begin到end之间的语句为执行体,执行体是存储过程与存储函数最核心的部分,执行体存放的是存储模块实际运行,实际起作用的内容。
  2. 如果我们需要存储过程做到可替换,即如果同名存在则替换之,只需要在CREATE后加上OR REPLACE关键字;如果需要将存储过程加密,可以在存储过程名后加上WITH ENCRYPTION:
    CREATE OR REPLACE
    PROCEDURE pcd_1
    WITH ENCRYPTION(a IN OUT INT) AS 
    DECLARE b INT:=10;
    BEGIN
            a:=a+b;
            PRINT a;
    END;
  3. 进一步地,如果想进一步增强其健壮性,可以在可执行部分后加上异常处理语句,关键字为EXCEPTION:
    CREATE OR REPLACE
    PROCEDURE pcd_1
    WITH ENCRYPTION(a IN OUT INT) AS 
    b INT:=10;
    BEGIN
            a:=a+b;
            PRINT a;
    exception
    WHEN others then
            null;
    END;
  4. 当然,输入的参数可以不止一个,声明的变量也可以不止一个。

    CREATE OR REPLACE
    PROCEDURE pcd_1
    WITH ENCRYPTION(a IN INT,b IN int) AS
    c INT:=6;
    d INT:=5;
    BEGIN
            a:=a+b;
            PRINT a;
    exception
    when others then
            null;
    END;

3. 存储函数

        存储函数与存储过程比较类似,区别在于:

  1. 存储过程没有返回值,调用者只能通过访问 OUT 或 IN OUT 参数来获得执行结果,
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值