![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle Notes
文章平均质量分 79
wh62592855
这个作者很懒,什么都没留下…
展开
-
PL/SQL变量名和表中列名相同的错误
话不多说,先来看一个例子吧。SQL> desc string Name Null? Type ----------------------------------------- -------- ---------------------------- NAME原创 2009-10-21 22:11:00 · 2202 阅读 · 0 评论 -
ORACLE PL/SQL 集合API 总结
ORACLE 10G的集合API 集合API方法最早是在ORACLE 8I中引入的。集合API提供了简化访问集合的方法。在ORACLE 10G以前,这些方法确实简化了对集合的访问。但是,并不是非要求掌握这些方法不可。从ORACLE 9I的INDEX-BY表到ORACLE 10G的联合数组的转换,使它们成为必须掌握的方法。 下面是我从书上摘录下的一些集合API,累死我了……想上网找个原创 2009-10-31 13:15:00 · 2850 阅读 · 0 评论 -
ORACLE PL/SQL 集合学习笔记(二)
三、嵌套表的使用方法 1、将嵌套表定义为PL/SQL的程序构造块 TYPE type_name IS TABLE OF element_type[NOT NULL]; 如下例所示:DECLARE -- Define a nested table of variable length strings. TYPE card_table IS TAB原创 2009-10-31 12:57:00 · 1285 阅读 · 0 评论 -
ORACLE PL/SQL 集合学习笔记(三)
四、联合数组的使用方法联合数组以前被称为PL/SQL表。在表中不能使用联合数组,只能将它们用作程序设计的结构体。只能在PL/SQL中访问联合数组。 注意到联合数组带来的一些关键问题是非常重要的。这些问题使我们介绍它们的用法时,需要采取一些特别的方法。这些问题包括:联合数组不需要初始化,也没有构造函数语法。在对它们进行赋值以前,也不需要专门为其分配存储空间,也就不需要使用原创 2009-10-31 13:03:00 · 1564 阅读 · 0 评论 -
ORACLE PL/SQL开发--bulk collect的用法
刚刚在inthirties老大的博客里看到这篇文章,写的不错,正好自己最近在学习PL/SQL,转过来学习学习。 ================================================================================== bulk collect是可以看做是一种批获取的方式,在我们的plsql的代码段里经常作为into的扩展来转载 2009-11-01 17:50:00 · 1474 阅读 · 0 评论 -
ORACLE GROUPING函数的使用
GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。 关于ROLLUP和CUBE函数的使用,请参见我的另一篇文章。http://blog.csdn.net/wh62592855/archiv原创 2009-11-16 20:50:00 · 42760 阅读 · 14 评论 -
ORACLE GROUPING_ID函数
可以使用GROUPING_ID函数借助HAVING子句对记录进行过滤,将不包含小计或者总计的记录除去。GROUPING_ID()函数可以接受一列或多列,返回GROUPING位向量的十进制值。GROUPING位向量的计算方法是将按照顺序对每一列调用GROUPING函数的结果组合起来。 关于GROUPING函数的使用方法可以参见我前面写的一篇文章http://blog.csdn.net/w原创 2009-11-16 21:21:00 · 15651 阅读 · 3 评论 -
ORACLE ROLLUP和CUBE的使用
ROLLUP,是GROUP BY子句的一种扩展,可以为每个分组返回小计记录以及为所有分组返回总计记录。CUBE,也是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。 在文章的最后附上了相关表和记录创建的脚本。 1、向ROLLUP传递一列SQL> select division_id,sum(salary) 2 from emplo原创 2009-11-16 20:25:00 · 25669 阅读 · 10 评论 -
ORACLE关于数据字典的困惑~
最近在论坛上一直看到有朋友对数据字典里的内容搞不太清楚,比如说V$、V_$、GV$等等,到底哪个是同义词,哪个是视图,哪个基于哪个创建。今天正好看到盖国强的《深入浅出ORACLE》第三章讲到这方面内容,总结一下,也方便大家学习。 数据字典由四部分组成:1、内部RDBMS(X$)表X$是Oracle数据库的核心部分,这些表用于跟踪内部数据库信息,维护数据库的正常运行。X$表是加密的,原创 2009-11-22 21:37:00 · 1847 阅读 · 0 评论 -
ORACLE 内存管理--《深入浅出ORACLE第四章》
Oracle 9i动态SGA管理在Oracle 9i中,可以设置SGA_MAX_SIZE,该参数用以控制各缓冲池使用的内存总和,本质上是在进程中预先分配一段虚拟地址备用而不分配物理内存,目的是防止和进城私有地址段的冲突。只要总的SGA内存设置不超过SGA_MAX_SIZE的设置,更改都可以立即生效。需要注意的是,在Oracle 9iR1中,动态减小内存设置会触发一些Bug。当在转载 2009-11-25 20:58:00 · 2940 阅读 · 0 评论 -
BUFFER CACHE和SHARED POOL原理--《深入浅出ORACLE第五章》
Buffer CacheLRU与Dirty List在Buffer Cache中,Oracle通过几个链表进行内存管理。LRU list用于维护内存中的Buffer,按照LRU算法进行管理。数据库初始化时,所有的Buffer都被Hash到LRU list上管理。当需要从数据文件上读取数据时,首先要在LRU List上寻找Free的Buffer,然后读取数据到Buffer Cache中;原创 2009-11-26 22:16:00 · 4250 阅读 · 0 评论 -
ORACLE UNDO--《深入浅出ORACLE第七章》
如果说Redo是用来保证在故障时事务可以被恢复,那么Undo则是用来保证事务可以被回退或者撤销。在修改操作中,对于回退段的操作存在多处,在事务开始时,首先需要在回滚段表空间获得一个事务槽,分配空间,然后创建前镜像,此后事务的修改才能进行,Oracle必须以此来保证事务是可以回退的。如果用户提交了事务,Oracle会在日志文件记录提交,并且写出日志,同时会在回滚段中把该事务标记为已提交;如果转载 2009-11-29 21:37:00 · 2491 阅读 · 0 评论 -
ORACLE REDO--《深入浅出ORACLE第六章》
Redo的内容Oracle通过Redo来实现快速提交,一方面是因为Redo Log File可以连续、顺序地快速写出,另一个方面也和Redo记录的精简内容有关。两个概念:改变向量(Change Vector)改变向量表示对数据库内某一个数据块所做的一次变更。改变向量中包含了变更的数据块的版本号、事务操作代码、变更从属数据块的地址(DBA)以及更新后的数据。例如:一个update事务转载 2009-11-29 19:47:00 · 3136 阅读 · 0 评论 -
ORACLE PL/SQL 集合学习笔记(一)
一、集合简介记录是管理当行数据所必需的结构体,而集合是管理多行数据所必需的结构体。集合就是列表,可能有序也可能无序。有序列表的索引是唯一性的数字下标;而无序列表的索引时唯一性的标识符,这些标识符可以是数字、哈西值,也可以是一些字符串名。 ORACLE 10g提供了3种集合类型,下面给出三种集合类型的对照说明表。 集合类型可用下标原创 2009-10-31 12:48:00 · 1633 阅读 · 0 评论 -
ORACLE PL/SQL 记录(Record)学习笔记(二)
二、以形参的形式定义和使用记录、对象类型在用作形式参数时,记录类型和对象类型有很多相同之处。在将它们作为游标、函数或过程的形式参数以前,事先都必须定义一个记录类型或者对象类型。如下例所示: 记录DECLARE -- Define a record type. TYPE individual_record IS RECORD (indi原创 2009-10-31 12:44:00 · 2694 阅读 · 0 评论 -
PL/SQL中GOTO语句和标签
在PL/SQL中也提供GOTO语句,其语法是 GOTO label; 这里label是在PL/SQL块中定义的标签.标签是用双箭头括号括起来的.当执行GOTO语句的时候,控制会立即转到由标签标识的语句. 1.对于GOTO的限制 a.对于块,循环或者IF语句而言,想要从外层跳到内层是非法的. b.使用GOTO子句从一个IF子句跳到另一个子句中也是非法的.原创 2009-10-21 22:39:00 · 6593 阅读 · 0 评论 -
oracle中的字符比较
在ORACLE中,当两个字符进行比较的时候,可以使用两种比较语义:填充空格式(blank-padded)或者非填充空格式(non-blank-padded) 1.填充空格式 1)如果string1和string2是不同长度的,那么首先在较短的字符串上填充空格使得它们的长度相同.2)逐个字符地比较每个字符串,从字符串左边开始.假设string1中的字符时char1,string2原创 2009-10-21 22:21:00 · 5166 阅读 · 0 评论 -
ORACLE PL/SQL游标(cursor)学习笔记
其实以前就学过游标的,可是昨天晚上在看书的过程中看到游标一节,发现很多了新的知识点,自己以前都不怎么了解。呵呵,不知道是这本书写得好还是自己以前学过的东西大部分都忘记了。呵呵,所以决定这次写一些东西在这里,以后忘了也方便查询。 1.什么是游标为了处理SQL语句,ORACLE必须分配一片内存区域,这就是上下文区域(context area)。上下文区域包含了完成该处理所必需的信息,原创 2009-10-26 11:00:00 · 3143 阅读 · 1 评论 -
ORACLE PL/SQL包(package)学习笔记
包由包规范和包体两部分组成。 1、包规范(Package Specification)包规范,也叫做包头,包含了有关包的内容的信息。但是,它不包含任何过程的代码。创建包头的语法一般如下 CREATE [OR REPLACE] PACKAGE package_name {IS | AS}Procedure_name | function_name | variable_d原创 2009-10-27 23:13:00 · 4868 阅读 · 2 评论 -
ORACLE PL/SQL 对象(object)学习笔记(一)
1、对象类型规范 创建对象类型规范的语法如下 CREATE [OR REPLACE] TYPE [schema.] type_name[AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (Attribute1 datatype,[attribute2 datatype,…][method 1][method原创 2009-10-27 23:25:00 · 5366 阅读 · 1 评论 -
ORACLE PL/SQL 对象(object)学习笔记(二)
4、对象依赖性 CREATE OR REPLACE TYPE Obj1 AS OBJECT ( f1 NUMBER, f2 VARCHAR2(10), f3 DATE);/ CREATE OR REPLACE TYPE Obj2 AS OBJECT ( f1 DATE, f2 CHAR(1));原创 2009-10-27 23:35:00 · 1788 阅读 · 0 评论 -
ORACLE PL/SQL异常处理(Exception)学习笔记
1、PL/SQL错误类型错误类型报告者处理方法编译时错误PL/SQL编译器交互式地处理:编译器报告错误,你必须更正这些错误运行时错误PL/SQL运行时引擎程序化地处理:异常由异常处理子程序引发并进行捕获 2、异常的声明有两种异原创 2009-10-28 08:51:00 · 20509 阅读 · 2 评论 -
ORACLE PL/SQL 触发器(trigger)学习笔记
1、触发器的概念触发器也是一种带名的PL/SQL块。触发器类似于过程和函数,因为它们都是拥有声明、执行和异常处理过程的带名PL/SQL块。与包类似,触发器必须存储在数据库中并且不能被块进行本地化声明。对于触发器而言,当触发事件发生的时候就会显式地执行该触发器,并且触发器不接受参数。 创建触发器的语法如下 CREATE [OR REPLACE] TRIGGER tr原创 2009-10-27 23:17:00 · 4421 阅读 · 0 评论 -
ORACLE PL/SQL子程序--过程和函数学习笔记
温故而知新,果然如此呀,第二次再翻开同样的内容果然有不同的收获,有些是第一次看的时候没有仔细理解的,还有些可能是在第一次看匆匆就跳过的,当然,可能还有部分是自己当时记住了完了又给忘记了。今天第二次看到子程序这一章节,发现了些新的内容,呵呵。在这里我就写下一些基本内容和容易忘记的,免得下次又给忘了。内容可能不太全面,有点针对我个人哦,呵呵! 1.创建子程序的语法创建过程C原创 2009-10-26 21:35:00 · 1932 阅读 · 0 评论 -
ORACLE PL/SQL 对象(object)学习笔记(三)
7、对象类型继承 对象类型实现允许我们创建一个基类型,或叫父类型,这种类型的属性或方法可以被另一个对象类型继承。然后可以创建一个子类型,或叫孩子类型,直接使用继承过来的属性或方法,或者用自己的属性和方法重写父类型的属性或方法。 INSTANTIABLE关键字表示我们可以从该类型中实例化或者创建对象实例。FINAL关键字是指该对象类型下面不再有子类型,没有其他类型会继承该对象类型原创 2009-10-27 23:43:00 · 1748 阅读 · 0 评论 -
ORACLE MODEL子句学习笔记
ORACLE 10G中新增的MODEL子句可以用来进行行间计算。MODEL子句允许像访问数组中元素那样访问记录中的某个列。这就提供了诸如电子表格计算之类的计算能力。 1、MODEL子句示例下面这个查询获取2003年内由员工#21完成的产品类型为#1和#2的销量,并根据2003年的销售数据预测出2004年1月、2月、3月的销量。 select prd_type_id,year,m原创 2009-11-07 17:06:00 · 16152 阅读 · 8 评论 -
ORACLE PL/SQL 记录(Record)学习笔记(一)
在PL/SQL程序设计中,有三种定义记录类型的方法:一种是使用%ROWTYPE属性;另一种是在PL/SQL程序的声明部分显示定义记录类型;最后一种方法是将记录类型定义为数据库结构或对象类型。我先简单的介绍一个下面要用到的表的结构(黑体标明的字段为主键): INDIVIDUALS表 INDIVIDUAL IDFIRST NAMEMIDDLE_INITIALLAST_N原创 2009-10-31 12:32:00 · 2211 阅读 · 0 评论 -
ORACLE 等待事件--《深入浅出ORACLE第八章》
等待事件的源起等待事件的概念大概是从ORACLE 7.0.12中引入的,大致有100个等待事件。在ORACLE 8.0中这个数目增大到了大约150个,在ORACLE 8I中大约有220个事件,在ORACLE 9IR2中大约有400个等待事件,而在最近ORACLE 10GR2中,大约有874个等待事件。虽然不同版本和组件安装可能会有不同数目的等待事件,但是这些等待事件都可以通过查询V$EVE转载 2009-12-01 10:18:00 · 1959 阅读 · 0 评论