最近在写sql语句时,碰到两个问题:
1)ora-01795: maximum number of expressions in a list is 1000
起因:写出了这样的sql语句:select pallet_id,box_id,status from sd_current_box where pallet_id in('+pallets+');其中的pallets是有很多个pallet_id组合成的字符串。
分析:很显然,,根据错误提示可以知道:in 中items的限制 1000个。
解决:用子查询来代替pallets长字串。
2)ora-01704: string literal too long
起因:写出了这样的sql语句:update pdm_memberlist set members=' ... 此处略去n多串 '.
分析:数据库设计members字段为xmltype格式,数据存储时候,是以字符串的形式存储。这样在xml数据量大的时候,造成sql语句过长,尝过2k的限制。
解决:参数化sql语句。
