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直接改的吗?正常情况下,长度短的变长,应该不会报错,不行你就只能导出数据,删掉重建表了
删除重建表,把数据导入,目前还算正常。