当前位置: 代码迷 >> DB2 >> DB2批改表结构最好的方式是什么
  详细解决方案

DB2批改表结构最好的方式是什么

热度:2442   发布时间:2013-02-26 00:00:00.0
DB2修改表结构最好的方式是什么?
数据库是DB2,一个字段原来是decimal(9,2),我想改成decimal(13,2),修改后报错全部信息如下:

--------------------------------------------------------------------

[IBM][CLI Driver][DB2/NT] SQL0443N  例程 "ALTOBJ"(特定名称 "")返回错误 
SQLSTATE,且诊断文本为 "SQL0204 Token: SYSTOOLS.ALTOBJ_INFO_V          
               "。  SQLSTATE=38553

说明: 
SQLSTATE 与消息正文 "<正文>" 一起由例程 "<例程名>"(特定名称 "<特定名
称>")返回给 DB2。例程可以是用户定义的函数或用户定义的方法。

用户响应: 
用户需要理解该错误的含意。咨询数据库管理员,或例程的程序设计者。
由 IBM 提供的函数在 SYSFUN 模式中检测到的错误全都返回 SQLSTATE 38552。
消息的消息正文部分的格式是:
SYSFUN:nn

其中 nn 是原因码,它表示: 

01       数值超出范围

02       被零除

03       算术溢出或下溢

04       日期格式无效

05       时间格式无效

06       时间戳记格式无效

07       时间戳记持续时间的字符表示法无效

08       时间间隔类型无效(必须是 1、2、4、8、16、32、64、128、256 之一
         )

09       字符串太长

10       字符串函数中的长度或位置超出范围

11       浮点数的字符表示法无效

12       内存不足

13       意外错误

由 IBM 提供的例程在 SYSIBM 或 SYSPROC 模式中以及 IBM 提供的过程在 SYSFUN
模式中检测到的错误全都返回 SQLSTATE 38553。消息的消息正文部分一个包含可
能是 SQLCODE 的消息号(例如,SQL0572N),一个 DBA 错误消息(例如,
DBA4747)或例程的其他一些指示(例如,遇到了什么错误)。注意,如果该消息
号的消息正常地包含标记,那么这些标记值仅在 db2diag.log 文件中可用。
  sqlcode:  -443
  sqlstate: (例程返回的 SQLSTATE)。

--------------------------------------------------------------



请江湖上的朋友帮帮忙,能否给解释下报错原因?不知怎样修改DB2表结构才是最好的方式?




------解决方案--------------------------------------------------------
最好的方式是drop后重建 但如果有数据的话就有些麻烦
------解决方案--------------------------------------------------------
你怎么改的?

CREATE TABLE test(id INT,price DECIMAL(9,2))
ALTER TABLE test ALTER COLUMN price SET DATA TYPE DECIMAL(13,2)

------解决方案--------------------------------------------------------
你用alter直接改的吗?正常情况下,长度短的变长,应该不会报错,不行你就只能导出数据,删掉重建表了
  相关解决方案