阅历总结:运用IBM DB2数据库的详细事变
1.在装置DB2数据库后,你可以议决号令行方式或图形界面方式来操纵,若是你的数据库效能端不在本机,则需求在“客户机设置扶助措施”中做一个客户端连接的设置。
2.节制地方中无法增点窜数据,只能编写sql语句来完成而quest提供的工具固然能添加数据,但居然无法用复制、粘贴和Tab键,必需一一输出,然后用鼠标点击切换现存数据看来可以在单位格中编纂点窜,但理想却无法commit,呵呵,还是老诚笃实写update语句,至于删除数据,更黑白写delete语句不行。不过可以用pb以单位格方式编纂数据,相应的一个缺陷是编纂数据的按钮和删除表的按钮太近,万一点错了删除表的按钮,pb但是不作提醒就把表给删了的,faint
3.DB2的视图里不能直接用order by语句,必需如许写:
select × from(select a,b,c from table1 order by a)as tab
注释:这种写法的条件是你曾经打过补丁了
4.存储进程的效果:
DB2提供ltrim函数和rtrim函数,但偏偏不提供trim函数,若是你但愿去除字符两端的空格,对不起,必需用ltrim(rtrim()) 的方式挪用insert 语句里面居然不能用表达式赋值,必需把值先赋给一个变量挪用其他存储进程时居然不能用常量做参数,必需把这个常量的值赋给一个变量,再以这个变量为参数
select * from table fetch first n rows only 语句居然在存储进程里不行用
5.存储进程里可以运用静态sql,但函数里却不行以运用,kao
6. 遇到commit或rollback时自动关闭游标,所以需求慎重运用零丁提交。
proc builder总是在调试中内存缺乏,屏幕花失落。而如武断点调试时停息不休止下去的光阴略微长一点就会提醒超时,受不了。
7.开辟效果:
在运用 日期变量 1 MONTHS OR 日期变量-1 MONTHS 的方式取日期时,比喻日期变量值为 2004-02-29时,存储进程里将日期变量 1 MONTHS 赋值给另一
日期变量时会出错。相应SQLSTATE为01506(db2 ? 01506): 对 DATE 或TIMESTAMP值休止了调整,以校正算术运算得出的无效日期。
若是要获取的只是下一月份,可接纳的替换体式格局是获取以后日期所在月份的第一天作为基准后 1 MONTHS OR -1 MONTHS
8.对变量的赋值不能用select ..into ..方式而要用set v=(select ..)的方式,详细的示比喻下:
drop function SXFM.ISORDERSUBMITDATE;
CREATE FUNCTION SXFM.ISORDERSUBMITDATE(IN_ROW_ID DECIMAL(16,0))
RETURNS DATE
LANGUAGE SQL
BEGIN ATOMIC
DECLARE V_SUBMIT_DATE DATE;
DECLARE V_SELL_ID DECIMAL(16, 0);
DECLARE V_BUY_ID DECIMAL(16, 0);
set V_SELL_ID = (SELECT COALESCE(RECEIVE_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
set V_BUY_ID = (SELECT COALESCE(PAY_ID,-1) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);
set V_SUBMIT_DATE = (SELECT DATE(MAX(A.SUBMIT_DATE)) FROM AM_AUDIT_QUEUE A,SM_USER B,SM_USER C
WHERE A.TABLE_CODE=’IS_ORDER’ AND A.TABLE_ROW_ID=IN_ROW_ID
AND A.AUDIT_EMP_ID=C.ROW_ID AND C.BRANCH_ID=V_BUY_ID --考核方为付款方
AND A.SUBMIT_EMP_ID=B.ROW_ID AND B.BRANCH_ID=V_SELL_ID); --提交方为收款方
RETURN V_SUBMIT_DATE;
END;
#SYNC 10;
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46635.html
版权声明:
原创作品,准许转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。否则将究查执法责任。