Oracle中Clob类型处理解析最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在 2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值)。

经过不断查找资料和自己的试验该问题终于得到解决,下边我将自己的心得给大家做一个分享。

准备

系统环境 xp+。net2。0+oracle9i

表结构(由于是测试,表结构随便建了一张) XX

字段名

类型

ID

VARCHAR2(70)

TEST

CLOB

测试

方式1:直接将CLOB的值拼写在SQL语句中。

代码:

string id = Guid。NewGuid()。ToString();

OracleCommand cmd = Conn。CreateCommand();

cmd。CommandText = "insert into xx(id,test) values('" + id + "','" + data + "')";// data是一个变量,存储你要插入的字符串

cmd。

ExecuteNonQuery();

情况分析:

当data的长度大于4000时报错(ORA-01704:文字字符串过长),小于或等于4000时正常插入。

原因分析:

之所以会出现长度大于4000时报错,是因为Oracle中有SQL语句中两个单引号之间的字符数不能大于4000的限制。

'" + data + "' data在sql语句之间,当data的值大于4000个字节时就会报错。

解决办法:

这种方式比较棘手,但有更好的方式,下边会讲到 。

方式2:采用参数形式。

代码:

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();

情况分析:

采用这种方式能够正常插入。所以推荐用这种方式。

原因分析:

解决办法:

方式3:采用参数形式,但是参数类型写为OracleType。 NVarChar

代码:

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。

NVarChar);

p1。Value = data; // data是一个变量,存储你要插入的字符串

cmd。Parameters。Add(p1);

cmd。ExecuteNonQuery();。

全部

oracle clob 类型条件,Oracle中Clob类型如何处理?相关推荐

  1. oracle Expdp带条件,Oracle 11g expdp中query参数的使用

    Oracle 11g expdp中提供了query参数,可以在需要按条件导出表中部分数据时使用,它的使用就像是在select语句中的where条件使用一样. 数据库版本 linuxidc@ORCL&g ...

  2. oracle 索引命中条件,Oracle索引命中与扫描规律总结 | 学步园

    索引扫描类型(该表取自网络文章): index unique scan(索引唯一扫描)通过唯一索引查找一个数值经常返回单个ROWID.如果该唯一索引有多个列组成(即组合索引),则至少要有组合索引的引导 ...

  3. python布尔类型运算_Python中布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...

  4. python语言的三种数字类型_Python语言中的类型之数字类型--Python(10)

    数据从不一样的角度能够用不一样的含义去解释它,如: 10,011,101 对上面这个数据,咱们有以下多种含义去解释它: 1)它是1个二进制数字,或者是1个十进制数字: 2)一段文本: 3)用 , 号分 ...

  5. php 类型提示,PHP中的类型提示(type hinting)功能介绍

    PHP中的类型提示(type hinting)功能介绍 这篇文章主要介绍了PHP中的类型提示(type hinting)功能介绍,本文讲解了类型提示的作用和使用方法以及使用示例,需要的朋友可以参考下 ...

  6. java long类型大小_java中long类型占多少字节

    所谓的占用字节数 就是申请内存的时候所占的空间大小. long 8字节 最小值是 -9,223,372,036,854,775,808(-2^63): 最大值是 9,223,372,036,854,7 ...

  7. c语言函数返回值类型必须,C++中函数类型与定义的函数返回值类型必须相同么?...

    C++中函数类型与定义的函数返回值类型必须相同么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C++中函数类型与定义 ...

  8. oracle精度说明符1~38_ORACLE 中NUMBER类型默认的精度和Scale问题

    在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间.P是Precison的英文缩 ...

  9. oracle存储过程 多条件,Oracle多条件查询实际分页存储过程实操

    以下的文章主要是介绍Oracle多条件查询分页存储过程,以下就是Oracle多条件查询分页存储过程具体方案的描述,希望在你今后的学习中会有所帮助.将业务逻辑放到Oracle中使得后台代码很精简,Ora ...

最新文章

  1. oracle财务软件凭证打印,金算盘财务软件后台数据库为Oracle
  2. 初识spring-boot
  3. C#刨根究底:《你必须知道的.NET》读书笔记系列
  4. 【编译打包】nginx_1.6.2-1~precise.debian.tar.gz
  5. Ubuntu 中如何使用 PPA 安装应用程序
  6. 计算机能否代替老师英语作文,雅思大作文范文:电脑不可取代老师
  7. 一看就懂的字符串匹配算法 之 BF算法(暴力匹配)
  8. knx智能照明控制系统电路图_智能照明控制系统(KNX)教材
  9. dbutils mysql_mysql dbutils
  10. Real-time Intended Knee Joint Motion Prediction by deep-recurrent neural networks利用深度递归神经网络实时预测膝关节运动
  11. 转】用Hadoop构建电影推荐系统
  12. LabVIEW编程LabVIEW开发Fluke8858A/8588A万用表 例程与相关资料
  13. 通过exif.js简单处理手机照片拍摄图片旋转问题
  14. PS旋转复制方法制作
  15. 广东省第四届“强网杯”网络安全大赛(“泄露的秘密WP”)
  16. 从Map中 取出第一个key/第一个value的方法
  17. 科技推动,服务创新,科里思特承办莆田市首期茶叶技术培训班活动
  18. 6成网友睡前不玩手机睡不着 专家称影响生育
  19. 【Linux】ifconfig命令详解
  20. 负载均衡和应用优化基础

热门文章

  1. keytool 工具介绍
  2. Matlab下地形图绘图包m_map绘图包绘制高分辨率海岸线、国界线与河流
  3. 机智云OTA过程MCU端程序设计学习(一)
  4. 用c语言实现复数的加减运算及复数的显示
  5. 通过百度API获取城市经纬度(1)
  6. Mac笔记本idea打包maven工程,本地环境运行正常,打包成功,却启动不成功
  7. linux内核源码制作rpm包,cmatrix源码包制作rpm包
  8. solr之使用IKAnalyzer配置同义词,停止词,扩展词。
  9. android 高德地图河流,周边数据-创建地图-开发指南-Android 室内地图SDK | 高德地图API...
  10. 上海大学计算机学院考研复试经验,上海大学计算机考研复试经验(09年-12年).doc...