Oracle Sql語(yǔ)句長(zhǎng)度限制問(wèn)題及解決 |
發(fā)布時(shí)間: 2012/8/11 16:47:26 |
最近在寫(xiě)Sql語(yǔ)句時(shí),碰到兩個(gè)問(wèn)題: 1)ORA-01795: maximum number of expressions in a list is 1000 起因:寫(xiě)出了這樣的sql語(yǔ)句:SELECT PALLET_ID,BOX_ID,STATUS FROM SD_CURRENT_BOX WHERE PALLET_ID IN('"+pallets+"');其中的pallets是有很多個(gè)pallet_id組合成的字符串。 分析:很顯然,根據(jù)錯(cuò)誤提示可以知道:in 中items的限制 1000個(gè)。 解決:用子查詢(xún)來(lái)代替pallets長(zhǎng)字串。 2)ORA-01704: string literal too long 起因:寫(xiě)出了這樣的Sql語(yǔ)句:UPDATE PDM_MEMBERLIST SET MEMBERS='<Project> ... 此處略去n多串 <ProjectID>'. 分析:數(shù)據(jù)庫(kù)設(shè)計(jì)MEMBERS字段為xmltype格式,數(shù)據(jù)存儲(chǔ)時(shí)候,是以字符串的形式存儲(chǔ)。這樣在xml數(shù)據(jù)量大的時(shí)候,造成sql語(yǔ)句過(guò)長(zhǎng),嘗過(guò)2k的限制。 解決:參數(shù)化sql語(yǔ)句。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |