`

在asp中处理oracle的clob字段[转]

 
阅读更多
首先在数据库后台创建两个过程,主要是用来往clob里面清除,添加内容
createorreplaceprocedureClearArticleClob(SerialNumbernumber)is
--功能说明:将clob字段的内容清空
--参数说明:
--SerialNumber:序号
begin
updatewww_articletsett.areticecontent=empty_clob()whereARTICLEID=SerialNumber;
commit;
endClearArticleClob;

createorreplaceprocedurewriteArticleClob(concentvarchar2,serialNumbernumber)is
--将字符串保存到clob类型的字段里面去
--参数说明:
--concent:文章内容
--serialNumber:文章序号
v_buffvarchar2(4000);
v_clobclob;
v_amtBINARY_INTEGER;
begin
v_buff:=concent;
v_amt:=length(v_buff);
selectARETICECONTENTintov_clobfromwww_articlewhereARTICLEID=serialNumberforupdate;
dbms_lob.writeappend(v_clob,v_amt,v_buff);
commit;
endwriteArticleClob;
其中将上面的表名和字段替换成自己的就可以了。

在asp里面写如下代码就去读取内容,然后把内容通过执行后台的过程把内容写进去。
表单:areticeContent项(也就是clob字段的内容)
ForconcentILoop=1ToRequest.Form("areticeContent").Count
areticeContent=Request.Form("areticeContent")(concentILoop)

dimcontentLen,midLoop,lloop,currentContent,startPosion
areticeContent=replace(areticeContent,"'","''")
'去掉多余的换行
areticeContent=replace(areticeContent,"<p>&nbsp;</p>","")
areticeContent=replace(areticeContent,"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;","&nbsp;")

contentLen=len(areticeContent)
ifconcentILoop=1then
conn.execute"ClearArticleClob("&articleID&")"
endif
ifcontentLen>1999then
ifcontentLenmod2000=0then
midLoop=contentLen/2000
else
midLoop=Int(contentLen/2000)+1
endif
startPosion=1
forlloop=1tomidLoop
currentContent=mid(areticeContent,startPosion,2000)
conn.execute"writeArticleClob('"&currentContent&"',"&articleID&")"
startPosion=startPosion+2000
next
else
conn.execute"writeArticleClob('"&areticeContent&"',"&articleID&")"
endif

next

简单的说其实就是把一篇文章分成几块保存进去。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics