oracel 重要记事

原创 2011年01月12日 08:40:00

1: length('‘) 的值是多少?  

       与length(null)的值一样,值均为null。因此,使用等于(=),不等于(!=,<>)这些运算都是不成立的。 length系列函数都一样,如:lengthB, lengthC, length2, length4。 同理, substr系列函数也一样。

2: pro *c 中一次 fetch 多条数据时,若遇到空值,则每次只fetch到空值所在行为止。 一个典型的处理方式如下:

EXEC SQL PREPARE s1 FROM :sSQLCode;
EXEC SQL DECLARE cur_s CURSOR FOR s1;
EXEC SQL OPEN cur_s;
根据 sqlca.sqlcode进行错误处理(打开游标是否出错);
for(; ;)
{
    EXEC SQL FETCH cur_s INTO :sArrVar;
        
    iCurrQryQt = sqlca.sqlerrd[2] - lHadQryQt;  //本次返回记录条数        
    lHadQryQt = sqlca.sqlerrd[2];               //已返回的总记录数
    
    根据 sqlca.sqlcode进行错误处理;
    如果找不到数据,则设置退出标志        

    for (i = 0; i<iCurrQryQt ; i++)
    {
        对每一条记录进行处理            
    }
    
    if ((iCurrQryQt < N_FETCH_ROW_MAX_QT) && (退出标志为真)) break;
}

其中 sArrVar是一个数组,假设元素个数为10,那么正常情况下一次会fetch到10条记录,但当记录有空值时,一次fetch只到空值所在的记录行。

3.oracle  NUMBER类型

Oracle number datatype 语法:NUMBER[(precision [, scale])]
简称:precision --> p (精度即有效位数)     scale     --> s (小数位数)

NUMBER(p, s)
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126   
保存在机器内部的范围: 1 ~ 22 bytes

有效为:从左边第一个不为0的数算起的位数。
s的情况:
s > 0
   精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p。可以直观地理解为,数值总长度为p位(除去小数点),其中有s位为小数。
s < 0
   精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + |s|。
s = 0
   此时NUMBER表示整数。 

可以与C语言中数值是一样理解,他们在内存中都是以指数形式存储的(科学计数法,如 0.1234 * 10^3),其存储方式如下:|正负号一位 | 有效数字 | 指数 |
如 242567 在内存的存储方式: | + | 0.24567 | 2 |,即一位的符号位,中间是有效数字,后面是指数2 (10的2次方)。
尽管如此,oracle的number类型的有效数字比C语言的double的多,在32位机的C语言中,浮点型数据的精度和范围如下,


类型说明符

比特数(字节数)

有效数字

数的范围

float

32(4)

6~7

10^-37~10^38         

double

64(8)

15~16

10^-307~10^308

long double

128(16)

18~19

10^-4931~10^4932

显然, oracle的number类型的有效数字高达38位,远远超过了C语言的19位。如此一来,在PRO *C进行程序设计中,将数值从数据库select ... into 或fetch .. into到本地变量时,有可能造成有效性数字的损失。同理,由于宿主语句对应数据类型的范围不同,也可能产生数值不可控的情况。

4.  Pro *C的语法支持:Pro*C对PL/SQL语法的支持是有限的,典型的就是不支持INNER JOIN, LEFT OUTER JOIN等语法,但这并不是说不支持内连接和外连接,而是换一种形式支持。内连接就不用说了,外连接可以采用外连接操作符(+)来实现。  除此之外,Pro*C还不支持WITH等语法。因此对于一些新奇的语法,最好先写个小例子程序来试试能不能编译过,不然,编译不过的时候等着哭吧。 

5. oracle的trigger中不能访问trigger所在的表

http://www.blogjava.net/john_yu/archive/2007/04/27/114215.html

 

6. 更改列名

alter table .. rename column .. to ..;


7. plsql中建表 报没有权限,需要在声明过程,或包的时候,加上 AUTHID CURRENT_USER

如:create or replace package adjust_data AUTHID CURRENT_USER  is xxxx;

参考见: http://bbs.csdn.net/topics/360200923


关于感染型病毒ramnit和runner的查杀记事

主要是在测试一些软件的时候不小心中毒的,当时还是拿虚拟机测试软件,但是复制出来的时候中毒了。 记得复制出来的时候,某杀软还提醒了一下,但是没当回事,轻易加白名单了,因为文件中有一个是自己写的...

11月的浮躁:感情记事 把她锁在身边

目前最优的做法:把她锁在身边我的废话很多,自己还订下了规则,写了的东西不能修改,一次成型,还要发布。越来越难以一个人相处,一周7天,无法忍受天黑之后没有人陪,哪怕就一天。 花费也不断攀升,心脏还不好...

毕业工作大记事【未完待续持续更新。。。。】

我感觉我从08年毕业到现在也是很长的一段时间了,老是想写个回忆录之类的来记录自己的这段经历,所以才有了这篇文章。由于老是想不起来定期更新,所以进度老是很慢,写一步算一步吧。现在csdn上的人好像也没以...

今日记事20160511

今日记事20160511每天看别人的故事,都感觉是一种成长,每天都需要一点心灵鸡汤,来抚慰自己在前进道路上遇到的坎,不知道前方在哪里,但是我知道,我需要一种傻逼一样的坚持,每次遇上自己烦心的事,我知道...

sharepoint 2010 如何用SocialCommentManager获取记事板评论数据

前面有一篇文章,提到sharepoint 2010 如何给文档库或自定义列表添加评论功能 那么如何获取里面的评论数据,以下是获取数据的方法介绍。 首先,我们看看下面这个文档,里面有5条评论。 ...

发哥逛金陵—逐浪软件项目组南京一二记事

第一次到南京,刚下飞机,在禄口机场,就能感受到南京人的热情。 接机司机是一个瘦瘦的小伙,一上车就向我们介绍南京近年来城市建设与经济发展的成果。一路上所见的高大立交桥、古色古香的地道口造型很容易给人深...
  • wwwwzf
  • wwwwzf
  • 2013年01月17日 10:03
  • 1113

08、09年记事

引子日子像风一样飘过,眼不见,心也烦……如今已经是公元2011年了,之所以想起要来写下近两年的一些事情,是因为我的第一本黑色笔记本。09年6月份,因为要准备参加研究生入学考试(简称“考研”),所以便购...
  • lianbch
  • lianbch
  • 2011年02月09日 21:17
  • 660

记事

前段时间去面试,面试官可能年纪跟我差不多或者稍大些,应该是做技术出身的吧,感觉人挺随和的。 一开始问的问题是对出差有什么看法,大体是公司不定时需要出差,但出差时间不会太长,问是否能接受。由于以前也有...

拆机记事——显卡驱动

最开始的故障要从我那35元买的8G的金士顿U盘说起。之前也用U盘做过启动盘,用的是一个叫做大白菜的软件,免费的实在是太不靠谱了,U盘老是坏掉。然后,发现了ultraiSO的利器,不用想,俺显然是买不起...

python pymysql mysql乱码记事

sql = "SELECT p.per_name,p.Per_Sort,p.Per_ID,d.Par_ID,d.par_label FROM `personnel` as p left JOIN `p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracel 重要记事
举报原因:
原因补充:

(最多只允许输入30个字)