从一个案例看PL/SQL代码片的编译与运行
PL/SQL语言是Oracle针对数据库业务逻辑需求开发的一种面向过程的结构化编程语句。在Oracle内核中,存在PL/SLQ引擎和SQL引擎两个重要组成部分,分别用于处理结构化的PL/SQL语句和SQL语句。 同所有高级语言一样,PL/SQL语句同样存在编译和运行两个关键步骤。在Compile环节,主要实现语法权限检查、...
使用调用者权限实现Schema导向操作
很多时候,我们都会使用存储过程Procedure来实现一些脚本工具。通过Procedure来实现一些数据库相关的维护、开发工作,可以大大提高我们日常工作效率。一个朋友最近咨询了关于Procedure调用的问题,觉得比较有意思,记录下来供需要的朋友不时之需。 1、问题描述 问题背景是这样,朋友...
Oracle中如何更新一张大表记录
SQL语句是一种方便的语言,同样也是一种“迷惑性”的语言。这个主要体现在它的集合操作特性上。无论数据表数据量是1条,还是1亿条,更新的语句都是完全相同。但是,实际执行结果(或者能否出现结果)却是有很大的差异。笔者在开发DBA领域的一个理念是:作为开发人员,对数据库、对数据要有敬畏之心,一个语...
Oracle 11g中的Native PL/SQL代码编译
Oracle环境中,PL/SQL是我们进行业务逻辑实现的最佳手段,同时也是和Oracle数据库本身结合的最好的语言。使用好PL/SQL本身功能,可以大幅度提高我们的工作效率。我们从最开始学习计算机和编程开始,就接触到一个概念叫做“二进制程序码”。计算机可以直接进行二进制代码的执行,就目前而言,二进制是计算机...
聊聊Forall使用的几个细节问题
Oracle PL/SQL是我们进行数据库应用开发极其方便的工具。PL/SQL的提出,是给面向集合操作的SQL和过程化程序结构之间提供一种过渡衔接。同其他程序设计语言一样,PL/SQL也存在基本的顺序、条件和循环语句结构。Forall作为For循环结构的一种变体,在PL/SQL程序优化过程中占到了很大的比重。Forall的优势在笔...
PL/SQL与DDL语句
PL/SQL是我们在Oracle环境下进行数据处理的好工具。相对于集合操作方式的SQL语句,PL/SQL则是面向过程化的开发语言,实际工作中的便利性更好。在PL/SQL代码里面,我们可以同时使用SQL语句和过程化的PL/SQL代码,两者交替使用。Oracle在处理PL/SQL代码过程中,也是使用SQL引擎和PL/SQL引擎交替处理。...
Oracle 存储过程中的DDL语句
Oracle的存储过程,是我们使用数据库应用开发的重要工具手段。在存储过程中,我们大部分应用场景都是使用DML语句进行数据增删改操作。本篇中,我们一起探讨一下数据定义语句DDL在存储过程中使用的细节和要点...
使用DBMS_HPROF评测PL/SQL代码性能(下)
Dbms_hprof是Oracle11g推出的新特性,作用是分析pl/sql代码执行过程中性能评测分析。在本系列的前篇(http://space.itpub.net/17203031/viewspace-702694)中,我们已经介绍如何使用dbms_hprof进行性能测定以...
使用DBMS_HPROF评测PL/SQL代码性能(上)
PL/SQL是Oracle提供的过程化数据库语言,因其与Oracle数据库、SQL语言之间的无缝连接,一直在数据库开发领域扮演着很重要的地位。 我们使用PL/SQL开发的程序代码,无论是封装过的存储过程sp,...
Oracle UTL_MAIL邮件包程序使用实践
在《使用UTL_MAIL包实现存储过程邮件发送》(http://space.itpub.net/17203031/viewspace-700327)中,笔者已经初步介绍了使用UTL_MAIL包实现系统邮件发送功能。UTL_MAIL包较传统的PL/SQL邮件发送已经有很大...
使用UTL_MAIL包实现存储过程邮件发送
邮件通知预警和提示在当前系统中已经是一个比较常见的功能。各类型语言分别针对邮件提供了功能包和API接口方法,本篇介绍如何在PL/SQL代码中使用UTL_MAIL工具包发送邮件,同时还介绍配置中注意的细节要点。&...
使用Wrap加密,保护Oracle程序源代码
存储过程、函数、包等结构,表示了软件系统的业务逻辑和领域逻辑。将业务逻辑组织在数据层之上,特别是数据库软件中,是一种比较传统和常见的做法。虽然这种方式与时下流行的设计理念有差异,但是在实际工作...
“=》”关联操作符在Oracle 10g和11g的变化差异
关联操作符(=>)是我们在PL/SQL中经常使用到的一种参数指定操作符。借助这个操作符,可以将原有的通过顺序进行配比的参数匹配,变成可以显示进行参数指定。 关联操作符最开始是由PL/SQL中引入的语法...
Select For update语句浅析
Select … for update语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 ...
所有者权限和调用者权限(二)
有了前面对所有者权限的介绍,调用者权限的含义就相对容易理解了。调用者权限体系就是执行方法体的时候,使用的权限按照调用者权限体系来判断。一个方法的执行,调用者除了要拥有方法的执行权限,还要拥有方...
所有者权限和调用者权限(一)
在Oracle中,系统权限、对象权限以及他们的集合角色权限,是一个相对复杂的安全体系。在前一篇《使用Role权限体系》(http://space.itpub.net/17203031/viewspace-691917)中,已经进行初步介绍。存储过程作...
角色Role使用中注意事项一例
角色是我们使用Oracle进行权限管理时候的一个重要方法。通过设置不同类型的角色,组织不同角色可以使用的系统权限和对象权限。之后简单的将不同角色附加给不同用户,这样在管理和维护上都有着很多优势。&nbs...
nls_sort与汉字排序
朋友在进行报表需求评估的时候,突然问笔者一个问题:在数据库里面,汉字进行排序的顺序是按照什么方法?对空值null,是排在第一位还是最后一位?当时做了一个简单的小实验,立刻获得了答案。但是之后,在想...
Returning Into子句研究(二)
Returning bulk collect into子句支持批量 当进行DML操作的数据集合为批量多行的时候,可以使用bulk collect into进行结果集合收集。如果进行dml操作的结果集合为多行,但是使用returning into子句到...
Returning Into子句研究(一)
在对数据表进行dml操作(Insert、Update和delete)的时候,有时会需要获取到进行操作的数据。最简单的方法就是在DML操作之前或者之后进行一下select操作,将数据获取到。此外,还可以使用一种更为简洁的方法,就是...