Oracle PL/SQL programming 读书笔记(1)

chapter 1, 2, 3

pl/sql入门

pl/sql语言基础

有效的编码风格

[@more@]

PL/SQL 入门

Pl/sql procedural language extensions to SQL (SQL 的过程化扩展)

不作为独立存在的语言,一半使用在oracle 数据库, oracle Forms reports)里面的触发

Pl/sql 记录

记录是一种复杂的数据接口,大致等于数据库里面的行。

建立了保存四季销售记录的record

Type sales_quarters_rec is record

(

Q1_sales number ,

Q2_sales number,

Q3_sales number,

Q4_sales number

);

Pl/ sql

驻留内存的对象,类似数组的结构需要。类似于表但不等同于表。目前pl/sql 表只能包含一列和一个主键(类型必须为binary_integer

Type company_name_tab is table of varchar2(100) index by binary_integer;

Company_names company_names_tab; --声明在代码中要使用的表。

内置函数

字符函数 日期函数 数字函数 转换函数

内置包

Dbms_output

Dbms_pipe

Dbms_lock

控制结构

If 条件控制

循环控制 for, while, 简单的循环

Goto null 顺序控制

基于游标的数据库访问

异常处理

模块化结构

存储过程,函数和包

几个优秀的pl/sql 功能

锚定的声明

Segment1 mtl_system_items_b.segment1%type;

内置函数

Length 字符串长度

Substr /instr

msi.segment1 = SUBSTR (v_segment1, 1, LENGTH (v_segment1) - 2) || '00'

--取得料号前n-2

IF INSTRB(i.line_type,'Cash_Discount',1)>0 THEN

--如果其中包含cash_discount 字符串,则。。。

内置包

游标for循环

免去声明并锚定的

不用写open , fetch, close

不用检查%found 属性

嵌套的块

Begin end …. 表明层次

模块的重载

package body check
is
function
value_ok(date_in in date ) return boolean
is
begin
return date_in<= sysdate;
end;

function
value_ok(number_in in number) return boolean
is
begin
return number_in>
0;
end;

局部模块

局部定义不能被外部的pl/sql 调用

模块,变量, 记录, 游标和异常的集合。

充分使用

PL/SQL 语言基础

字符集 :字母 数字 符号 空白

不区分大小写

符号

标识符:

最多30个字符

必须字母为开头

可以包括美元符号,_下划线, # 散列符

不包含空格

保留字

直接量

IF ‘Steven’= ‘steven’ -- false

字符串中嵌入单引号

输入插入单引号就插入两个相同的’’ , 插入两个相同的单引号来代替。

数字直接量

布尔直接量 不加引号

分号界定符:每个语句以分号作为结束的标记

单行注释

多行注释

/*
---------------------------------------------------------------------------------------------
-- File Name : XXUTS_CONTRACT_EXEC_REPORT.pkb
-- Program Name : XXUTS_CONTRACT_EXEC_REPORT
-- Purpose : uses to summary order and shipping information
-- parameters :
-- 1.p_cust_po Optional
-- 2.p_sales_region Optional
-- 3.p_sales_name Optional
-- 4.p_curr_code Required
-- 5.p_item_prod_line Optional
-- 6.p_item_prod_family Optional
-- 7.p_order_date_from Optional
-- 8.p_order_date_to Optional
-- 9.p_act_ship_date_from Optional
-- 10.p_act_ship_date_to Optional
-- 11.p_shipping_status Optional
-- Dependencies :
--
-- Modification History
---------------------------------------------------------------------------------------------
-- | WHEN | Ver | WHO | WHAT
--------------------------------------------------------------------------------------

-- 27-Jul-06 |v8.0 | Aaron Su | CMP2440 Modify the cost
---------------------------------------------------------------------------------------------
*/

PRAGMA

通知编译程序,编译的时候处理,不在运行的时候执行

EXCEPTION_INIT 特定的错误号与程序中的声明异常标识符关联起来。

RESTRICT_REFERENCES 通知编译程序打包程序的纯度

SERIALLY_REUSABLE 在数据引用之间不要保持包级别数据

块结构

块头

IS

声明段

BEGIN

执行段

Exception

异常段

END;

块的作用域

有效的编码风格

有效布局的基本原则:展现并强化程序的逻辑结构

缩排

大小写

每排至多写一条语句

忽略声明的排列

格式化多行语句

格式化SQL 语句,控制语句,pl/sql 块,

注释:

解释为什么,不是怎么样

注释声明语句:给每个声明提供各自的注释

注释包

/*
---------------------------------------------------------------------------------------------
-- File Name : XXUTS_CONTRACT_EXEC_REPORT.pkb
-- Program Name : XXUTS_CONTRACT_EXEC_REPORT
-- Purpose : uses to summary order and shipping information
-- parameters :
-- 1.p_cust_po Optional
-- 2.p_sales_region Optional
-- 3.p_sales_name Optional
-- 4.p_curr_code Required
-- 5.p_item_prod_line Optional
-- 6.p_item_prod_family Optional
-- 7.p_order_date_from Optional
-- 8.p_order_date_to Optional
-- 9.p_act_ship_date_from Optional
-- 10.p_act_ship_date_to Optional
-- 11.p_shipping_status Optional
-- Dependencies :
--
-- Modification History
---------------------------------------------------------------------------------------------
-- | WHEN | Ver | WHO | WHAT
--------------------------------------------------------------------------------------
-- 27-Jul-06 |v8.0 | Aaron Su | CMP2440 Modify the cost
---------------------------------------------------------------------------------------------
*/

请使用浏览器的分享功能分享到微信等