如何处理Oracle中较大的文本数据?
来源:asp之家 时间:2009-11-11 20:06:00
请问如何处理Oracle中较大的文本数据?
我们可在ASP中予以解决,如在Oracle8i中文版中,建立数据表:
CREATE TABLE SYSTEM.TEST(
BLOB LONG,
ID NUMBER)
/
date.asp
' 存入数据
<%
' 表单提交处理部分
If request("ok")=1 then
function tansstr(sstr)
sstr=replace(sstr," "," ")
sstr=replace(sstr,chr(13) & chr(10),"<br>")
tansstr=sstr
end function
' 字符转换函数
a=lenb(request("text"))
b=len(request("text"))
c=tansstr(request("text"))
' 提交数据赋值
Set OraSession=CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase=OraSession.DbOpenDatabase("autop","system/manager",0)
Set rs=OraDatabase.CreateDynaset("select * from date order by id desc",0)
' 打开数据库date表以rs为记录集
if rs.eof then
id=1
' 求ID值
else
id=rs("id")+1
end if
' 受SQL语句长度限制,以非SQL语句存入数据
rs.DbAddNew
' 新建记录
rs.Fields("blob").DbAppendChunk(c)
' 用rs记录集的Fields对象的DbAppendChunk方法处理大字段存入.这是关键哦
rs("id")=id
' 存入ID值
rs.DbUpdate
' 刷新记录集
' 显示结果部分
Response.write "恭喜,数据已成功存入数据库中!<br>"
Response.write "总计占用字符数:<font color=blue>" & formatnumber(b,2,-2,-2,-1) & "</font> 字节<br>"
Response.write "<a href='view.asp'>调出数据</a>"
rs.close
set rs=nothing
Set OraSession=nothing
' 关闭数据连接。
Response.end
End If
%>
<html>
<body>
<form method="POST" action="date.asp">
<p><font><b>精彩春风之Oracle数据存储</b></font></p>
<p><textarea rows="13" name="text" cols="104"></textarea></p>
<p><input type="submit" value="存入" name="B1"></p>
<input type="hidden" name="ok" value="1">
</form>
</body>
</html>
view.asp
' 数据调出程序:
<%
Set OraSession=CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase=OraSession.DbOpenDatabase("autop","system/manager",0)
Set Rs=OraDatabase.DbCreateDynaset("select * from date order by id desc",4)
' 连接数并以只读方式打开数据表
Size=65280
' 赋初始值.定义每次截取字节大小为1024byte,最大可以设为65280byte(64K)
I=0
Do
Text=Rs.Fields("Blob").DbGetChunk(I*Size,Size)
' 以rs记录集的Fields对象的DbGetChunk方法在循环中读出数据
Response.write Text
Text_Size=Lenb(Text)
' 算出每次取出数据的详细字节数
I=I+1
Loop until Text_Size<Size
' 如果每次取出数据的字节数小于定义的截取字节,则说明该数据已经完毕,退出循环
Set OraSession=nothing
' 关闭数据连接
%>