-
DB2 SQL Function的一个问题10
SET SCHEMA SCMUSER; SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SCMUSER"; CREATE FUNCTION "SCMUSER"."GETBILLNO" ( "STRING" VARCHAR(30), "BTYPE" varchar(1) ) RETURNS VARCHAR(1000) LANGUAGE SQL NOT DETERMINISTIC CALLED ON NULL INPUT EXTERNAL ACTION MODIFIES SQL DATA INHERIT SPECIAL REGISTERS BEGIN ATOMIC Declare cd DATE; --时间 DECLARE y VARCHAR(4); --年 DECLARE m VARCHAR(2); --月 DECLARE d VARCHAR(2); ---日 DECLARE LASTDATE DATE; --上次插入时间 DECLARE GSTEP varchar(4); --- DECLARE DIGIT varchar(4); set cd = current date; --得到当前时间 set y = char(year(cd)); --得到年 set m = char(month(cd)); --得到月 if int(m) < 10 then set m ='0'|| m; end if; set d = char(day(cd)); --得到日 if int(d) < 10 then set d = '0'||d; end if; --查询是否存储当前实例的数据 if not exists(SELECT * from GENERATEBILLNO where SGCODE = STRING and BILLTYPE = BTYPE) then --如不存在符合条件的记录 insert into GENERATEBILLNO values(STRING,BTYPE,cd,'1'); -- 插入一条记录 --取出当前STEP set GSTEP = '1'; set DIGIT = char(length(GSTEP)); --检查位数 if DIGIT = '1' then set GSTEP = '000'||GSTEP; -- 不足四位补3个0 end if; if DIGIT = '2' then set GSTEP = '00'||GSTEP; end if; if DIGIT = '3' then set GSTEP = '0'||GSTEP; end if; RETURN y||m||d||GSTEP; ---返回结果 else set LASTDATE =( select GTIME from GENERATEBILLNO where SGCODE=STRING and BILLTYPE=BTYPE); -- 得到其时间 if year(LASTDATE) = year(cd) and month(LASTDATE) = MONTH(cd) and day(LASTDATE) = day(cd) then --判断是否与当天时间相等 LASTDATE = current date set GSTEP = ( select step from GENERATEBILLNO where SGCODE = STRING and BILLTYPE=BTYPE); set GSTEP = char(int(GSTEP)+1); update GENERATEBILLNO set STEP = GSTEP where SGCODE = STRING and BILLTYPE=BTYPE; else -- 与不相等 set GSTEP = '1'; update GENERATEBILLNO set STEP = GSTEP,GTIME = cd where SGCODE = STRING and BILLTYPE=BTYPE; end if; set DIGIT = char(length(GSTEP)); if DIGIT = '1' then set GSTEP = '000'||GSTEP; end if; if DIGIT = '2' then set GSTEP = '00'||GSTEP; end if; if DIGIT = '3' then set GSTEP = '0'||GSTEP; end if; RETURN y||m||d||GSTEP; end if; END;
这个是源SQL Function的代码,报的错是 "存在与MODIFIES SQL DATA 子句有关的多个关键字或相冲突的关键字!" 不知道怎么解决 ...
2010年11月04日 14:47
目前还没有答案
相关推荐
这意味着DB2无法找到一个与所提供的参数类型相匹配的例程版本。 **原因分析:** 1. **参数类型不匹配:** 调用例程时提供的参数类型与例程定义中的参数类型不符。 2. **例程未授权:** 当前用户没有被授予访问指定...
通过对DB2 UDB的语句事件监测器及其输出结果的深入理解与分析,可以帮助开发人员和DBA们有效地识别并解决SQL语句层面的性能问题。结合自定义的数据转换工具,可以进一步提升数据分析的效率和准确性,最终实现数据库...
《DB2 SQL手册第二卷》是一本全面且实用的手册,不仅适合于数据库管理员、应用程序开发者等专业人士,也适合于希望深入学习DB2 UDB SQL语言的学生和自学者。通过本手册的学习,读者可以系统地了解DB2 UDB SQL的各项...
2. **创建函数**:使用`CREATE FUNCTION`语句来定义一个新的函数。例如,我们可以创建一个简单的函数,计算两个数字的和: ```sql CREATE FUNCTION add_numbers(num1 INT, num2 INT) RETURNS INT LANGUAGE SQL ...
这一步骤告诉DB2数据库系统,你已经创建了一个新的函数,并准备在SQL查询中调用它。注册时,你将指定函数的名称、参数类型和返回类型等信息。 4. **调用函数**:一旦函数被成功注册,你就可以像使用内置函数一样在...
这里我们讨论的"db2创建加密function"指的是在DB2中定义一个可以对数据进行加密和解密的自定义函数,通常涉及编程语言如Java的集成以及SQL过程语言(PL/SQL)的使用。 首先,`EncryAES.java`可能是一个实现AES...
SQL FUNCTION Split 字符串分割函数 的创建,方法加实例
1. SELECT:这是最常用的SQL命令,用于从一个或多个表中选择数据。你可以指定列名、使用WHERE子句过滤记录、使用GROUP BY进行分组以及HAVING来进一步过滤分组后的结果。 2. INSERT:用于向表中插入新记录,格式通常...
DB Query Analyzer 6.03 是一款由马根峰推出的高效数据库查询工具,适用于各种RDBMS产品。这款工具以其强大的功能、用户友好的界面和简单易...对于需要处理多种数据库环境的IT专业人员来说,这无疑是一个宝贵的资源。
在本文中,我们将使用一个实用的例子来描述如何将CONNECT BY和相关的伪列映射到DB2递归。我们将定义和填充一个雇员表,然后使用递归查询来回答一些问题,例如“谁是‘Goyal’直接或间接的属下?” 首先,我们需要...
提供的压缩包文件包含了一个Java源代码文件`EncryAES.java`以及三个与创建加密和解密功能相关的文本文件:`function新建过程.TXT`、`function-encrypt.txt`和`function-decrypt.txt`。 首先,让我们了解一下`...
`MODE DB2SQL`也是必须的。 ##### 1.3 创建UDF (用户定义函数) **DB2 标量函数的语法:** ```sql CREATE FUNCTION function_name(parameters) RETURNS return_type LANGUAGE SQL READS SQL DATA RETURN statement ...
- 一个数据库可以在多个数据库服务器上安装,实现数据复制和高可用性。 6. **存储过程的SQL创建** - 自DB2 7.1版本起,可以使用SQL语句创建存储过程。 7. **DB2关系扩展器** - **文本扩展器 (TEXTEXTENDER)**:...
**存储过程**是一组预编译好的SQL语句集合,可以作为一个单元被调用,从而实现复杂业务逻辑的封装。 ##### >}}] 这可能是关于游标(Cursor)的介绍。**游标**允许程序逐行地读取查询结果集,从而可以更加灵活地处理...
以上输出显示`db2top`正在创建一个名为`db2snap-mydb-AIX64.bin`的文件来存储快照数据。随着时间的推移,文件中的数据量会逐渐增加。 #### 分析快照数据 收集完快照数据后,下一步就是利用`db2top`工具分析这些...
实验 #2 - 创建一个新的数据库............................................................................................43 4.1 DB2配置....................................................................
CREATE TRIGGER connect_audit_trg NO CASCADE BEFORE INSERT ON connect_audit REFERRING NEW AS n FOR EACH ROW MODE DB2SQL BEGIN ATOMIC SET n.timestamp = CURRENT_TIMESTAMP; END ``` - 注意点: 在DB2中,...