Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251531
  • 博文数量: 35
  • 博客积分: 198
  • 博客等级: 入伍新兵
  • 技术积分: 443
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-28 10:30
文章分类

全部博文(35)

文章存档

2015年(5)

2014年(14)

2013年(8)

2012年(7)

2011年(1)

我的朋友

分类: Oracle

2014-06-26 17:35:20

在Proc的程序开发中,发现程序中对于char类型与数据库char(1)类型之间的转换的一些问题,整理如下:

1. 在C程序中变量类型为char 类型, 数据库对应表字段类型为Number类型,按照C语言开发模型,我们知道char类型内部就是数字类型,也就是说 char 类型是可以转换为int 类型的, 那么在proc环境下,外部数据类型为char类型,那么对应的数据库类型应该是char,varchar2类型, 如果对应为number类型,程序在执行的时候就会报错 ORA-1722  Invalid Number。

2. C程序类型为char类型, 数据库对应类型为char(1), 如果c程序类型的数据,比如 变量 cBitFlag= 255, 如果插入数据,就会报SQL
ORA - 1400 错误01400, 00000, "cannot insert NULL into (%s)",如果cBitFlag=128, 则插入不报错,但是在查询的时候,查出来的值就是FLAG=[ffffff80],打印是按十进制方式打印,那就说明读之后的数据结果有问题,如果插入值 cBitFlag = 12 小于128 ,那么插入就没问题,读数据的时候也是没有问题的。并且和初始结果相等。

3. C程序类型为unsigned  char 类型,数据库对应表字段为char(1)类型,插入cBitFlag= 128, 插入不会出错,再次查询的结果值为128,不会出现乱码, 当cBitFlag=158, 插入数据库不会出错,但是查询该记录的时候,cBitFlag = 32, 当测试值cBitFlag=130,插入记录,再次查询,返回结果仍是32,如果C程序cBitFlag的值小于128,那么插入值是多少,查询值便是多少。
阅读(2116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~