ASP+数据库Oracle 9i 长字符数据的存储,高手快来帮忙,搞不定会死人的,救命啊!
ASP+数据库Oracle 9i
下面的Content字符串的长度小的话,没问题,但是一长就出错,而且LONG类型不能换成其它的类型的,就算换成CLOB也一样不行。
表:News
字段 ID(序列号),Subject(VarChar2 Default ''),Content(Long Default '')
第一种:
StrSql="insert into News(ID,Subject,Content)Values(Seq_News.nextval,'"&Subject&"','"&Content&"')"
objConn.execute StrSql
执行出错:
Microsoft OLE DB Provider for Oracle 错误 '80004005'
ORA-01704: 文字字符串过长
这样子不行噢, 我换:
第二种:
StrSql="select * from ghzc_News"
Set rsAdd = Server.CreateObject("ADODB.RecordSet")
rsAdd.open StrSql,objConn,1,3
rsAdd.Addnew
这里出错啦:
ADODB.Recordset 错误 '800a0cb3'
当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。
双不行是不是:
我在换,写存储过程:
第三种
create or replace procedure sp_News(
v_fun in number,
v_id in number,
v_subject in varchar2,
v_content in Long
) is
begin
if v_fun=1 then
insert into news(id,Subject,Content)
values
(seq_news.nextval,v_subject,v_content);
end if ;
if v_fun=2 then
update news set subject=v_subject,
content=v_content where id=v_id ;
end if;
end sp_News;
大家别说这个存储过程有问题,因为我测试过了,字符串小的还是没有问题的
StrSql="Call sp_News(1,0,'"&Subject&"','"&Content&"')"
objConn.execute StrSql
这里执行:数据小的没有问题,数据一大双出错啦
Microsoft OLE DB Provider for Oracle 错误 '80004005'
ORA-01704: 文字字符串过长
以上三种方法中:
第一种不行可以理解
第二种不行是为什么啊, 我以前做都是这样做的啊
第三种方法是我做JSP是做过的,用传参数调用存储过程,多大都没有问题(当然了,文本的不可能超过2G了)
现在主要是问大家第二种,第三种方法不行的原因,字段的类型是不可能换的啦,就是用LONG
在线等,各位大大不救我,我就要被炒啦
救命啊,救了我来福州我请吃饭,嘎嘎!