转载地址为:http://blog.sina.com.cn/s/blog_451f596201014wkw.html
一、oracle本身没有boolean类型,就是说跟数据库相关的类型中不包括boolean,一般采用number(1)和char(1)来实现。
所 以”Youcannotinsertthe values TRUE and FALSE into adatabasecolumn.Also,you cannot select or fetchcolumnvalues intoa BOOLEANvariable.“
plsql为了实现结构化编程,支持了boolean类 型,所以可能会出现的问题是一个存储过程或者函数的返回参数是boolean型的,但在call这个procedure的时候,无法注册boolean类 型的返回参数,执行时会抛出”参数类型不对“的exception,解决的方案就是把boolean的参数用别的类型代替。
不太明白oracle为什么不支持 boolean类型。
二、 一直被Oracle中没有boolean类型困扰,网上有两种解决方案,一是用Number(1),二是用Char(1),各有所长,个人比较喜欢用 Number方式解决,原因很简单,因为是从C语言开始的,这符合C语言的习惯。前几天有幸咨询到Oracle方面的顾问,他们提供的解决方案是用 Char(1)实现boolean,但也有需要注意的地方,原话如下:
三、PL/sql 中有boolean类型,有null类型
PL/sql中是有Boolean类型的,只能取2个值:true和false;
存储过程中的变量也支持boolean型;
但数据库中没有boolean类型。
四、存储过程中:
declare v1 boolean; begin v1:=1>2; if(v1)then dbms_output.put_line('true'); else dbms_output.put_line('false'); end if; end; 打印:false ---------------------------------------- declare v1 boolean; begin v1:=1>2; dbms_output.put_line(v1); end;
会报错。运行时得到错误信息:调用'PUT_LINE'
五:
oracle 没有boolean,MysqL用bit(1)而oracle可以用char(1) check(...(0,1))字段,
如:
然后JDBC用getBoolean()可以返回正确的结果。 原文链接:https://www.f2er.com/oracle/208759.html