今天又报了
完全没有想法了
在TOAD3.0Free中执行,报必须指定数据长度
结果就由:
CAST(#value# AS VARCHAR)
改为:
CAST(#value# AS VARCHAR(20))
但DECIMAL相关的,长度不指定就无所谓
CAST(#value# AS DECIMAL)
郁闷
20080409补记:
DECIMAL也必须指定精度,若不指定,将有可能报Overflow
今天又报了
完全没有想法了
在TOAD3.0Free中执行,报必须指定数据长度
结果就由:
CAST(#value# AS VARCHAR)
改为:
CAST(#value# AS VARCHAR(20))
但DECIMAL相关的,长度不指定就无所谓
CAST(#value# AS DECIMAL)
郁闷
20080409补记:
DECIMAL也必须指定精度,若不指定,将有可能报Overflow
代码为:
UPDATE DEMOTAB
SET VAL = (
CASE FLAG
WHEN 1
THEN #min#
WHEN 0
THEN #max#
END)
WHERE PUB=1
结果运行报错:
— Cause: com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
查找文档得知:
SQLCODE -418, Error: A STATEMENT STRING TO BE PREPARED CONTAINS AN INVALID USE OF PARAMETER MARKERS
结合http://www.javaeye.com/topic/58423所述,改为后,测试通过
UPDATE DEMOTAB
SET VAL = (
CASE FLAG
WHEN 1
THEN CAST(#min# as DECIMAL)
WHEN 0
THEN CAST(#max# as DECIMAL)
END)
WHERE PUB=1
结论:DB2中使用预编译语句,必须指定类型
DB2 UNCATALOG DATABASE MACAOMGR
DB2 REFRESH LDAP DB DIRECTORY
DB2 UNCATALOG NODE DB2I
DB2 UNCATALOG NODE IBMSZPC
DB2 REFRESH LDAP NODE DIRECTORY
DB2 CATALOG ADMIN TCPIP NODE IBMSZPC REMOTE 127.0.0.1 SYSTEM IBMSZ-PC OSTYPE NT
DB2 CATALOG TCPIP NODE DB2I REMOTE 127.0.0.1 SERVER 50000 REMOTE_INSTANCE DB2 SYSTEM IBMSZ-PC OSTYPE NT
DB2 REFRESH LDAP NODE DIRECTORY
DB2 CATALOG DATABASE DEMODB AT NODE DB2I
DB2 REFRESH LDAP DB DIRECTORY
关键是这句:
DB2 CATALOG DATABASE DEMODB AT NODE DB2I
若是你的数据库在服务器上起了别名,这里的DEMODB就必须改为别名,而不是真实数据库名。我在这里吃了大亏,折腾了将近一整天。
SYSTEM:WINXP SP2 ENG
DB:DB2 9.1
安装包:db2_v9_ese_win_32.zip
结果安装就是有问题,双击setup,进入正式安装后就乱码。折腾了半天后,总算是解决了:
1.setup.exe /i EN
or
2.直接使用msi,db2_v9_ese_win_32\image\db2\Windows\DB2 Enterprise Server Edition.msi
折腾完安装,兴奋地进入控制中心。一看,傻眼了,满眼的小方块…
知道一定是JAVA给整的,就调整fontconfig.properties.src,另存为fontconfig.properties。可怎么搞都没办法解决。 只能GOOGLE。
先搜到了IBM的官方文档,使用无效,这篇文档只是对界面进行美化的。又搜,搜到了这篇:DB2安装后控制中心乱码的解决方法。原来,需要另存为fontconfig.properties.zh!测试,成功!再按官方文档美化了一下,perfect!