数据库
noodles226
每天为了进步一点点,而不是工作,做好详细计划,即使计划是肤浅和不规范的,坚持区执行。
展开
-
decode-取数据最大序号自动增1.
需求:产品编码自增,要求编码长度为9位,默认数据自动增1.思路:1、首先产品编码是字符串类型,且首字符为'0'。转换成数值,只能舍弃第一位,然后再拼装。2、但是当第二位为9时,则需要进位,且下次转换不要舍弃第一位。3、LENGTH(to_number(productid)) = 9 productid+1 , '0'||(productid+1)4、decode(LENGTH原创 2015-11-25 09:18:02 · 681 阅读 · 0 评论 -
触发器--控制主键自增长度
需求:检查数据中的表productid必须为10。思路:通过触发器对表进行检查,如果超出则提示“数据自动编号溢出,请联系系统管理员”步骤:1、首先建立表级触发器,因为是插入(insert)。--错误应该是行级触发器2、插入前检查productid的长度如果超出,则抛出异常。CREATE OR REPLACE TRIGGER t_pdtinfo_pk BEFORE I原创 2015-11-25 09:40:24 · 512 阅读 · 0 评论 -
联系方式的校验(自己的算法和正则表达)
1、问题:因为最近使用DB2数据库,需要编写数据字段校验的规则,那么联系方式的规则一般分为手机和固话,根据现实中电话的格式类型,主要有(13xxxxxxxxx、15、17、18),固话分为XXXXXXXXX,0XX XXXXXXXX,0XX(X) XXXXXXXX,0XX(X)-XXXXXXXX 等,所以需要编写函数进行判断,正确返回1,其它根据情况返回对应的值。正则表达式(ORA原创 2015-12-12 18:01:19 · 3804 阅读 · 0 评论 -
测试存储过程中中发生异常时,之前DML操作会不会rollback
步骤:1、向表中productinfo插入一条数据 2、然后查询一个多条数据插入变量中(人为制造异常) 3、执行存储过程,检查数据是否插入成功 CREATE OR REPLACE PROCEDURE p_exp_test1 --创建存储过程是,存储过程关键词要有(procedure)ISv_productname productinfo.productname%TYPE;BEGIN原创 2015-11-26 10:19:27 · 181080 阅读 · 1 评论