zoukankan      html  css  js  c++  java
  • 两种方式,创建有返回值的DB2函数

    函数场景:路径信息由若干个机构编码组成,且一个机构编码是9位字符。 要求:获取路径信息,并且删除路径中包含‘99’开头的机构编码。

    从客户端及服务器端分别创建ignore99(pathinfo varchar(1800))函数

    1、在DbVisualizer中创建实现上述功能的函数

     1 --/
     2 CREATE FUNCTION ignore99 (pathinfo VARCHAR(1800)) RETURNS VARCHAR(1800) LANGUAGE SQL
     3 BEGIN ATOMIC
     4 DECLARE V_ORGCODE CHAR(9);--
     5 DECLARE I_NUMBER INT;--
     6 DECLARE I_INDEX INT;--
     7 DECLARE V_PATHSTR VARCHAR(1800);--
     8 
     9 set I_NUMBER=length(pathinfo)/9;--
    10 set I_INDEX=0;--
    11 set V_PATHSTR='';--
    12 WHILE I_NUMBER>0 DO--
    13     set V_ORGCODE=substr(pathinfo, I_INDEX*9+1, 9);--
    14     IF V_ORGCODE not like '99%' THEN --
    15     set V_PATHSTR = CONCAT(V_PATHSTR,V_ORGCODE);--
    16     END IF;--
    17     set I_INDEX = I_INDEX + 1;--
    18     set I_NUMBER = I_NUMBER - 1;--
    19 END WHILE;--
    20     RETURN V_PATHSTR;--
    21 END
    22 /

    在DbVisualizer创建函数的几个注意事项
    ①在DbVisualizer创建函数
    以"--/"开头,以"/"结尾
    ②最后的end后面没有";"
    ③传入的参数varchar 型的要定义长度
    ④"BEGIN ATOMIC"表示下面的程序块是一个事务
    ⑤变量的赋值格式: set 变量名=变量值,要加"set"关键字

    2、在Linux服务器端,创建一个成功的DB2函数

    ①先创建Crate_func.sql文件,将ignore99(pathinfo varchar(1800))写入Crate_func.sql文件

    CREATE FUNCTION ignore99 (pathinfo VARCHAR(1800)) RETURNS VARCHAR(1800) LANGUAGE SQL
    BEGIN ATOMIC
    DECLARE V_ORGCODE CHAR(9);--
    DECLARE I_NUMBER INT;--
    DECLARE I_INDEX INT;--
    DECLARE V_PATHSTR VARCHAR(1800);--
    
    set I_NUMBER=length(pathinfo)/9;--
    set I_INDEX=0;--
    set V_PATHSTR='';--
    WHILE I_NUMBER>0 DO--
        set V_ORGCODE=substr(pathinfo, I_INDEX*9+1, 9);--
        IF V_ORGCODE not like '99%' THEN --
        set V_PATHSTR = CONCAT(V_PATHSTR,V_ORGCODE);--
        END IF;--
        set I_INDEX = I_INDEX + 1;--
        set I_NUMBER = I_NUMBER - 1;--
    END WHILE;--
        RETURN V_PATHSTR;--
    END@
    View Code

    ②执行Crate_func.sql文件,命令:db2 -td@ -svf Crate_func.sql
    ③执行成功会显示:DB20000I  The SQL command completed successfully.

    ④注意事项:

    .sql文件以"@"结尾;

    执行@之前需要连接数据库db2 connect to 数据库名称;

  • 相关阅读:
    小程序底部弹出式导航菜单
    Markdown-it-latex2img
    Typography convention
    排版规约
    Java String的相关性质分析
    switch表达式中可以用哪些类型
    break,continue和return的区别
    一个.java文件中有多少个类(不是内部类)?
    RabbitMQ启动配置中出现(ArgumentError) argument error xxx的错误
    问题:IDEA部署Springboot项目的时候,提示很多xxx程序包找不到
  • 原文地址:https://www.cnblogs.com/handhead/p/11169596.html
Copyright © 2011-2022 走看看