使用 select 语句获取数据,有两种种结果,第一种,得到的结果只有一行,我们只需要用指定的变量来接收它就可以了,但第二种情况则是有多行数据,每一行数据,处理这种多行返回的数据也有两种方法,一个是使用一个二维宿主数组来接收这些结果(如果不知道结果有多少,宿主数组也不知道该定义多大,所以这种方法不太灵活),另外一个是使用游标的方式来遍历数据,游标又分单向的遍历游标和滚动游标。本文就介绍这些所有的方法。

Continue reading

在连接数据库的过程中我们有的时候可能会遇到连接数据库出错、插入数据出错、sql语句写错等等情况,除了这些,我们还会在插入和读取数据时会遇到处理 null 值的问题,以下代码演示了如何对 sql 执行出错进行处理,并执行了一个 null 值插入的操作,中间引入了指示变量的概念,就是专门为了处理 null 值而存在的,注意在插入数据时,指示变量是紧随宿主变量的(:loc:loc_ind)。后面我们将介绍 select 查询出来的 null 值该如何处理。

Continue reading

oracle proc 编程是在我的概念中是非常陌生的,学习了一天下来发现这东西真的好古老,但是依然健壮、稳定,其中间是编辑一个 .pc 的文件使用 proc 进行预处理,预处理后生成一个真正的.c文件,此时再由 gcc 去编译成一个可执行文件运行。因为 proc 涉及到的知识较多,我无法整理到几篇博文中就概述这些所涉及的知识,所以只能总结代码做好注释防止以后自己需要时忘记。如果有想进一步了解 proc 编程的,可以买名为“Oracle9I ProC C++编程指南”。包括 oracle 的环境搭建也并不是我们讨论的重点,如果有精力的话,我会给大家编写类似的教程。Continue reading

索引的概念不仅仅在 oracle 中存在,很多大型数据库软件都有索引的功能,其主要目的是为某张表的某个经常作为过滤条件的字段创建一个快速的索引区,当用户在查询过程中使用了这个过滤条件(比如 where id = 10)那么数据库会自动去索引区查找这个字段的索引,然后通过索引的指向快速找到需要查找的数据,可以抽象的理解它像我们C语言学习的指针一样。Continue reading

视图是一个抽象的概念,简单的说就是把表中的部分我们关注的内容保存一份出来到视图中,这样我们每次就不需要通过那么多字段的表去查询数据,只需要通过已经过滤出来的我们关系的数据中(视图中)取我们需要的数据。进一步说就是从一张大的表数据中抽离出来一部分我们关注的数据,这部分数据就是可以存放在视图中。向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。

Continue reading

事务,乍一看这个词不知其所以然,至少我第一次看到不知道他是干什么用的。要理解它并不难,你可以认为它就是我们在操作数据库时中间的一个通道,这个通道另一端就是数据库,从我们开始执行一个 DML 语句(参考:http://www.mycode.net.cn/database/823.html )开始,就相当于我们在向通道中塞数据或从通道中读取数据,但是要注意,这些数据不会立即到通道的另一端数据库内。只有我们执行了 commit 或者 执行了一条 DDL 语句时,系统会将我们之前执行的所有 DML 语句真正的应用到通道的另一端数据库中。那这个通道存在的价值是什么呢?那就只支持事务的回滚,意思就是如果我们对数据库做了一些错误的 DML 操作,那么可以通过回滚事务的方式回到执行了错误的 DML 语句之前,这就是事务的简单理解。Continue reading

有一张表,我们希望创建一个与这个表内容差不多的另外一张表,但是我们不需要这张表里面的某些字段,我们只需要一部分字段的数据,这种需求常规情况下可以手动自己使用 create table 来创建表并书写表结构,不过有更好的方法,就是在创建一张表的时候根据某张表的结构来进行创建,也可以使用过滤条件将另外一种表的一部分数据copy过来,具体参考下面案例。Continue reading