ORA-01704: 字符串文字太长 请高手指点

hbr168 2011-01-30 10:10:57
问题是这样的,我用ASP.NET做的网页。Oracle做数据库,想把大的字符存到数据表中,字段数据类型是CLOB。这个应该是可存储4GB的数据。可是插入超过4000字符时就出现ORA-01704: 字符串文字太长。是字符长度超出了正常的范围。我怎么解决这个问题,在网上也有同志遇到类似的问题。说是用变量和存储过程的方式可以解决。但我试过变量了,还是不行。存储过程对我初学Oracle者来说能力很有限。希望大家能帮我解决,我将不胜感激。

我的插入代码是:

string neirong = txtnr.Text.Trim();(要插入的内容)
string insertsql = "insert into news(newid,newbt,newnr)values(newid.nextval,'" + txtbt.Text.Trim() + "','" + neirong + "')";
dbzh.execsql(insertsql);(类里的方法)
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>alert('添加成功!');</script>", false);
txtbt.Text = "";
txtnr.Text = "";


最好帮修改代码:谢谢!
...全文
9619 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbr168 2011-01-30
  • 打赏
  • 举报
回复
两个都结贴给分,非常感谢你们两位。
hbr168 2011-01-30
  • 打赏
  • 举报
回复
问题搞定了.

(人生如梦)给的这个贴应该可以解决,但对我这样的菜鸟有些看不懂,不好意思。

(混个脸儿熟)这个代码可以解决,这个看得懂点。非常感谢。

我修改后的代码:
OracleConnection con = new OracleConnection(dbcon.conn());
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "insert into news(newid,newbt,newnr) values(newid.nextval,'" + txtbt.Text.Trim() +"',:p1)";
OracleParameter p1 = new OracleParameter("p1", OracleType.Clob);
p1.Value = neirong;
cmd.Parameters.Add(p1);
cmd.ExecuteNonQuery();
con.Close();
lgyQA 2011-01-30
  • 打赏
  • 举报
回复
之所以会出现长度大于4000时报错,是因为Oracle中有SQL语句中两个单引号之间的字符数不能大于4000的限制。'" + data + "' data在sql语句之间,当data的值大于4000个字节时就会报错。

string id = Guid.NewGuid().ToString();
OracleCommand cmd = Conn.CreateCommand();
cmd.CommandText = "insert into xx(id,test) values('" + id + "',:p1)";
OracleParameter p1 = new OracleParameter("p1", OracleType.Clob);
p1.Value = data; // data是一个变量,存储你要插入的字符串
cmd.Parameters.Add(p1);
cmd.ExecuteNonQuery();


采用这种方式能够正常插入。
gongsun 2011-01-30
  • 打赏
  • 举报
回复
跟一下,看看是不是 sql那一行 报错。

如果是的,就的修改你的sql语句。
hbr168 2011-01-30
  • 打赏
  • 举报
回复
这是个好贴,我研究一下。解决问题后来结贴。谢谢!
叶子 2011-01-30
  • 打赏
  • 举报
回复
既然提示ORA-01704

建议转到oracle板块
hbr168 2011-01-30
  • 打赏
  • 举报
回复
我已经看过也是过了,可能是我的代码有误,还是没能解决,谢谢你。
天下在我心 2011-01-30
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20061018/09/5090287.html
看看这个对你有帮助没有,照官方的说法,需要绑定变量

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧