往Oracle数据库中插入NCLOB/CLOB类型数据

2018-06-22 07:55:45来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

    最近因为业务需求开发了一个接口用于接收数据,但是总有一些数据报出ORA-01704:字符串文字太长错误。仔细排查后发现,竟然是NCLOB类型字段提示这个错误。NCLOB存储空间有4G,怎么也想不明白为什么会报这个错误。原来因为接口插入数据采用字符串拼接的方式。

 

1 string strSql = "insert into tablename (id) values ('" + id.ToString() + "')";

 

而oracle中会把字符串转为varchar2类型,当字符串非常长,超过4000字符时,就会报ORA-01704错误。

所以为了正确插入NCLOB或者CLOB类型的数据,需要如下面写法

string strSql = "insert into tablename (id) values (:id)";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(strSql);

OracleParameter oracPara = new OracleParameter("id", OracleType.NClob);
oracPara.Value = idvalue;

cmd.Parameters.Add(oracPara);

db.ExecuteNonQuery(cmd);

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Nginx 反向代理获取真实IP问题

下一篇:ASP.NET 内置对象