to zakat(听者如歌) 兄: 这个我早就做了哟。一样,在 pdSQL 中执行一样。都不报错,一直显示 executing.....(服务器刚启动试也是一样)我是装的 windows 版的 oracle 9i 我就一直怀疑是配置的问题。我装好后什么也没有动过呀!
做个实验: create table test ( id number, name varchar2(4) );然后插入name字段长度超过4的字符串,看看报不报错 insert into test ( id, name ) values ( 1, 'fdafdasf' );
to kulama2004(kulama) : 这个实验做过了。可以。但: insert into test ( id, name ) values ( 1, 'fdafdasasdfasfasdfasdddddddddddddddfasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddadddddddddddddddddddasdf' );就挂了。 而在 oralce 8i 下报错。
你居然成功了?应该是超长不成功才对,你报的错和我一样吗?不一样的话,把错误信息贴出来看看10:11:54 SQL> create table test ( id number, name varchar2(4) );Table created.Elapsed: 00:00:01.06 10:12:01 SQL> insert into test ( id, name ) values ( 1, 'fdafdasf' ); insert into test ( id, name ) values ( 1, 'fdafdasf' ) * ERROR at line 1: ORA-01401: inserted value too large for column Elapsed: 00:00:00.01
我刚问的问题: 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不过现在可以了, 是用存储过程做的,第三种方法是看情况用的,我自已是不行,解决方法是只要把第三种方法改一下 加个{} StrSql="{Call sp_News(1,0,'"&Subject&"','"&Content&"')" objConn.execute StrSql
这个我早就做了哟。一样,在 pdSQL 中执行一样。都不报错,一直显示 executing.....(服务器刚启动试也是一样)我是装的 windows 版的 oracle 9i 我就一直怀疑是配置的问题。我装好后什么也没有动过呀!
create table test ( id number, name varchar2(4) );然后插入name字段长度超过4的字符串,看看报不报错
insert into test ( id, name ) values ( 1, 'fdafdasf' );
这个实验做过了。可以。但:
insert into test ( id, name ) values ( 1, 'fdafdasasdfasfasdfasdddddddddddddddfasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddafasddddddddddddddddddddddddddddddddddadddddddddddddddddddasdf' );就挂了。 而在 oralce 8i 下报错。
10:12:01 SQL> insert into test ( id, name ) values ( 1, 'fdafdasf' );
insert into test ( id, name ) values ( 1, 'fdafdasf' )
*
ERROR at line 1:
ORA-01401: inserted value too large for column
Elapsed: 00:00:00.01
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不过现在可以了, 是用存储过程做的,第三种方法是看情况用的,我自已是不行,解决方法是只要把第三种方法改一下
加个{}
StrSql="{Call sp_News(1,0,'"&Subject&"','"&Content&"')"
objConn.execute StrSql
这样还可以插入超过4000个字符的数据
如果还是不行,加我QQ:5689168,我们继续讨论!
我用Jbuilder+weblogic+oracle9i
不到4000就报错了.
没有错误信息。执行后一直在处理没有反映!to zhonggan:
我加了你的QQ。 我的问题其实是不报错! 同样的数据库,代码在 oralce8i下都正常!
2。用prepareStatement
是的一样的,我直接导的。to yyri(行云)
没有特殊字符。