oracle pl/sql

ORACLE PL/SQL



1. PL/SQL 是 SQL 语言存储过程的扩展 , 包括两部分 : 一部是数据库引擎部分 , 另一部分是可嵌入到其他许多产品 (C,JAVA) 工具中的独立引擎 . 可将这两部分称为数据库 PL/SQL 和工具 PL/SQL. 以下介绍的是数据库 PL/SQL

2. PL/SQL 语言由以下几部分组成 :

1) 数据库定义语言 (DDL). 用于执行数据库中的任务 , 对数据库以及数据库中的各种对象进行创建 . 删除 , 修改 .



命令
功能说明

ALTER PROCEDURE
重新编译存储过程

ALTER TABLE
修改表

ANALYZE
收集数据库对象性能统计资料

ALTER TABLE AND CONSTRAINT
在已有表上增加约束

CTREATE TABLE
创建表

CREATE INDEX
创建索引

DROP TABLE
删除表

DROP INDEX
删除索引




2) 数据操纵语言 (DML). 用于操纵数据库中各种对象 , 检索 , 或修改数据 . 在使用 DML 前 , 必须获得相应的权限 .

命令
功能说明

SELECT
查询数据库

INSERT
插入一行记录

UPDATE
修改数据库记录

DELETE
从表中删除数据




3) 数据控制语言 (DCL) 用于安全管理 , 确定哪些用户可以查看或修改数据库中的数据 ,DCL 包括的主要语句及其功能如下 :

命令
功能说明

GRANT
将用户或角色授与用户和角色

REVOKE
从用户或角色收回权限




PL/SQL 是面向过程的程序结构 , 包括以下几点 :

1) 变量和类型

2) 控制语句

3) 过程和函数

4) 对象类型和方法

3. PL/SQL 结构 :

DECLARE

/** 变量声明 **/

BEGIN

Statements

Exceptions

END

其中变量声明和异常是可选的 .

4. PL/SQL 标识符 : 所有的大小写英文字母 , 数字 0-9, 常用符号 ( 无 ”-“), 最大标识符为 30 个字符

5. PL/SQL 运算符 : 算术运算符 {+,-,*, / ,**( 指数 ),||( 连接 )}, 关系运算符 { 常用比较运算符 ,BETWEEN AND ,IN ,LIKE,IS NULL}; 逻辑运算符 {AND , OR ,NOT}

6. 其他符号



符号
意义
样例

( )
列表分隔
(‘john’,’rose’)

;
语句结束
Procedure_name(arg1,arg2)

.
项分离
Select * from account.table


字符串定界符
If var1=’a+1’

:=
赋值
a:=a+1

||
并置
Fullname:=’a’||’b’

--
注释符
--this is a comment

/* */
注释定界符
/*this too is a comment*/


7. PL/SQL 变量 : 变量的类型可以是 PL/SQL 中的 , 也可以是自定义的 .

变量的定义 :< 变量名 >< 数据类型 >[( 宽度 ):=< 初始值 >]

如 :count varchar2(20):=’1’;



变量的属性包括变量名和数据类型

%TYPE 属性提供了变量和数据列的数据类型 .

如 :my_xh XS.XH%TYPE 表示变量 my_xh 和字段 XH 拥有相同的数据类型 .

使用 %TYPE 有两个优点 :

1) 不必知道 XH 列的确切数据类型

2) 如果改变了 XH 的列定义 ,my_xh 的数据类型在运行时可自动修改 .

%ROWTYPE 用于声明表的行记录 . 对用户自定义的域 . 记录包含唯一的命名域 , 具有不同的数据类型 .



DECLARE

TYPE TimeRec is RECORD (HH number(2),MM number(2));

TYPE MeetingTyp is RECORD

(

Meeting_Date date,

Meeting_Time TimeRec,-- 嵌套变量

Meeting_Addr varchar2(20),

Meeting_Purpose varchar2(50)



)

DECLARE

cj_rec XS_KC%ROWTYPE

引用

my_xh := cj_rec.xh;



如果使用了游标提取 XH,KCH,CJ,XF 则可以使用 %ROWTYPE 声明一个记录保存相同的信息 .

DECLARE

CURSOR

IS

SELECT XH,KCH,CJ

FROM XS_KC

Cj_rec c1%ROWTYPE;

当执行下面的语句时

FETCH c1 INTO cj_rec;

在 XS_KC 表的 XH 列的值就是赋于 cj_rec 的 XH 域

变量的作用域 : 位于 BEGIN END 之间

PL/SQL 常量定义 :

< 常量名 >CONSTANT< 数据类型 >:=< 值 >

PL/SQL 常用数据类型 :

VARCHAR 类型

NUMBER 类型

DATE 类型

BOOLEAN 类型

* 用户自定义数据类型

语法格式 :

TYPE typename IS system_data_type

Typename 是用户自定义的数据类型名称 ,system_date_type 是自定义类型依赖的基类型

定义一个记录类型

TYPE xs_rec IS RECORD

{

Xh number(2) not null:=1;

Xm char(8)

}

数据类型转换 :

1) TO_CHAR( 将 NUMBER,DATE 转换成 VARCHAR2 类型 )

2) TO_DATE( 将 CHAR 转换成 DATE 类型 )

3) TO_NUMBER: 将 CHAR 转换成 NUMBER 类型

PL/SQL 的自动转换 :

1) 字符型和数字型

2) 字符型和日期型



8. PL/SQL 基本程序控制结构 :

1. 条件结构 :

IF 逻辑结构 (3 种表达式 )

1)IF-THEN

语法结构 :

IF boolean_expression THEN

Run_experssion;

ENDIF;

2)IF-THEN-ELSE

语法格式 :

IF boolean_expression THEN

Run_expression;

ELSE

Run_expression2;

ENDIF;

3)IF-THEN-ELSIF-THEN-ELSE

语法格式 :

IF boolean_expression1 THEN

Run_expression1;

ELSIF boolean_expression2 THEN

Run_expression2;

ELSE

Run_expression3;

ENDIF;

2. 循环结构

1.LOOP – EXIT –END 循环

语法格式 :

LOOP

Run_expression ;

IF boolean_expression THEN

EXIT;

ENDIF;

END LOOP;

2.LOOP – EXIT-WHEN-END

语法格式 :

LOOP

Run_expression

EXIT WHEN boolean_expression

ENDLOOP

3.WHILE-LOOP-END

语法格式 :

WHILE boolean_expression

LOOP

Run_expression

END LOOP



4.FOR – IN –LOOP – END

语法格式 :

FOR count IN count_1 ..count_n

LOOP

Run_expression

END LOOP

说明 :

Count 是循环变量 ,IN 确定循环变量的初始值 count_1 和终值 count_n, 在循环变量之间的范围之间的是分隔符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值