DB2 for AS/400创建表及插入数据时Token无效问题求助
DB2 for AS/400 表创建与插入语句错误排查及正确语法
这些错误和PUB400服务器性能无关,都是语法或会话参数设置问题,以下是对应解决方案:
一、创建EMPLEADO表的正确语法
创建DECIMAL(9,2)列本身语法合法,报错大概率是表定义中其他列的语法疏漏(比如字符类型列未指定长度)。完整的正确建表语句示例:
CREATE TABLE EMPLEADO ( CODIGO INTEGER, -- 根据实际需求选择类型,如编码是字符串可改用 VARCHAR(10) NOMBRE VARCHAR(50), -- 必须指定字符列长度,不可省略 SUELDO DECIMAL(9,2) );
如果仍报错,检查是否存在拼写错误、列名包含特殊字符,或者会话使用了非标准SQL模式。
二、插入语句的正确写法
插入时'JOHN DOE'报错,核心原因是字符串常量的引号规则不匹配当前会话设置:
- 默认情况下,DB2 for i(AS/400)支持单引号表示字符串,但如果会话开启了
QUOTED_IDENTIFIER=YES,单引号会被识别为标识符(列名/表名),此时需改用双引号包裹字符串:INSERT INTO EMPLEADO(CODIGO,NOMBRE,SUELDO) VALUES(1523698,"JOHN DOE",2500.00); - 若想统一使用单引号,可先修改会话参数:
再执行标准单引号插入语句:SET QUOTED_IDENTIFIER = NO;INSERT INTO EMPLEADO(CODIGO,NOMBRE,SUELDO) VALUES(1523698,'JOHN DOE',2500.00); -- 加上小数位更符合DECIMAL(9,2)类型定义
内容的提问来源于stack exchange,提问作者reymagnus
相关产品推荐
相关产品推荐

