数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

DB2使用经验备忘


发布日期:2021年10月09日
 
DB2使用经验备忘

安装DB后可以通过命令窗口这样的命令行方式或控制中心这样的图形界面方式来操作而如果你的数据库服务端不在本机则还需要在客户机配置辅助程序中做一个客户端连接的配置

控制中心中无法增删改数据只能编写sql语句来实现而quest提供的工具虽然能增加数据但居然无法用复制粘贴和Tab键必须逐个输入然后用鼠标点击切换现存数据看来可以在单元格中编辑修改但实际却无法commit呵呵还是老老实实写update语句至于删除数据更是非写delete语句不可不过可以用pb以单元格方式编辑数据相应的一个缺点是编辑数据的按钮和删除表的按钮太近万一点错了删除表的按钮pb可是不作提示就把表给删了的faint

DB的视图里不能直接用order by语句必须这样写 select × from(select abc from table order by a)astab

这种写法的前提是你已经打过补丁了

存储过程的问题:

DB提供ltrim函数和rtrim函数但偏偏不提供trim函数如果你希望去除字符两端的空格对不起必须用ltrim(rtrim()) 的方式调用insert 语句里面居然不能用表达式赋值必须把值先赋给一个变量调用其他存储过程时竟然不能用常量做参数必须把这个常量的值赋给一个变量再以这个变量为参数

select * from table fetch first n rows only 语句居然在存储过程里不可用

存储过程里可以使用动态sql但函数里却不可以使用kao

遇到commit或rollback时自动关闭游标所以需要慎重使用单独提交

proc builder老是在调试中内存不足屏幕花掉而如果断点调试时暂停不进行下去的时间稍微长一点就会提示超时受不了

开发中遇到的一个问题

在使用 日期变量+ MONTHS OR 日期变量 MONTHS 的方式取日期时比如日期变量值为 存储过程里将日期变量+ MONTHS 赋值给另一

日期变量时会出错相应SQLSTATE为(db ? ): 对 DATE 或TIMESTAMP值进行了调整以校正算术运算得出的无效日期

如果要获取的只是下一月份可采用的替代方法是获取当前日期所在月份的第一天作为基准后+ MONTHS OR MONTHS

哈哈今天帮别人弄存储过程的经验@

搞了半天搞不定一查原来的文档才了原来tmd该死的DB的存储过程是转换为C后进行编译的因此在数据库服务器上要安装一个C编译器才能完成存储过程的编译并且需要使用DBSET命令设置DB_SQLROUTINE_COMPILER_PATH指向C编译器的安装路径如:dbset

DB_SQLROUTINE_COMPILER_PATH=E:\ProgramFiles\MicrosoftVisualStudio\VC\Bin\vcvarsbat

对变量的赋值不能用select into 方式而要用set v=(select )的方式代码示例如下

drop function SXFMISORDERSUBMITDATE;

CREATE FUNCTION SXFMISORDERSUBMITDATE(IN_ROW_ID DECIMAL())

RETURNS DATE

LANGUAGE SQL

BEGIN ATOMIC

DECLARE V_SUBMIT_DATE DATE;

DECLARE V_SELL_ID DECIMAL( );

DECLARE V_BUY_ID DECIMAL( );

set V_SELL_ID = (SELECT COALESCE(RECEIVE_ID) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);

set V_BUY_ID = (SELECT COALESCE(PAY_ID) FROM IS_ORDER WHERE ROW_ID=IN_ROW_ID);

set V_SUBMIT_DATE = (SELECT DATE(MAX(ASUBMIT_DATE)) FROM AM_AUDIT_QUEUE ASM_USER BSM_USER C

WHERE ATABLE_CODE=IS_ORDER AND ATABLE_ROW_ID=IN_ROW_ID

AND AAUDIT_EMP_ID=CROW_ID AND CBRANCH_ID=V_BUY_ID 审核方为付款方

AND ASUBMIT_EMP_ID=BROW_ID AND BBRANCH_ID=V_SELL_ID); 提交方为收款方

RETURN V_SUBMIT_DATE;

END;

#SYNC ;

DB的游标打开后遇到commit和rollback默认是会关闭的保持游标打开的方法是在定义游标时加上with hold选项

F:导出某张表的数据且该表包含long varchar型数据该如何操作Q:Export:db connect to [dbname] user [user] using [password]dbmove [dbname] export tn [tablename] u [user] p[password] (单表)dbmove [dbname] export tn [tablenametablename] u [user] p [password] (多表)Import:dbmove [dbname] import

               

上一篇:DB2 performance expert V2简介

下一篇:在Linux3.0下安装DB28.2