- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章ORACLE复习提纲
第六章 PL/SQL基础
一、PL/SQL块
1、分类
无名块:动态构造,只能执行一次。
子程序:存储在数据库中的存储过程、函数及包等。当在数据库上建立好后可以在其他程序中调用它们。
触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。
2、无名PL/SQL块结构
由声明部分、执行部分、异常处理部分三个部分组成,执行部分是必须的。
DECLARE
/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */
BEGIN
/* 执行部分: 过程及SQL 语句, 即程序的主要部分*/
EXCEPTION
/* 执行异常部分: 错误处理 */
END;
3、PL/SQL写法
语句可以写在多行上
语法单位可以分为分隔符、标识符(包括保留字)、文字常量、注释
分隔符是有特殊意义的简单或复合符号,如:
+ - * / = @(访问远程数据库的符号) ;(语句结束符) != || --(单行注释) /* */(注释开始和结束) :=
标识符
文字常量:
字符和日期文字常量必须使用单引号括起
数字常量可以是简单数值或科学计数法表示的数值
XeY表示X*10Y
二、使用变量
1、标识符
标识符名不能超过30个字符;
第一个字符必须为字母;
不分大小写;
不能用‘-’(减号);
不能是SQL保留字。
注意:一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果。
变量名不要与数据库中的列重名
本地变量或形参的名字优先于表名
数据库列名优先于本地变量的名字
2、数据类型
变量分为标量类型、复合类型、LOB类型和引用类型
标量数据类型
保存单个值
没有内部组件
CHAR[(maximum_length)]最大32767字节
VARCHAR2(maximum_length)最大32767字节
LONG 32760 字节
LONG RAW 32760 字节
RAW(长度) 最大32760字节
NUMBER[(precision,scale)
BINARY_INTEGER 符号数
PLS_INTEGER符号数,占用内存更少,运算速度快
BOOLEAN,只能保存TURE、FALSE和NULL
BLOB、CLOB、BFILE,保存了大对象的定位器(一个指向大对象存贮位置的指针)
复合数据类型
分为记录型和集合型
记录型将逻辑上相关的数据项组织成一个整体
集合型包括index by table(索引表)、nested table嵌套表、Varray变长数组,集合类型将数据集合作为一个对象来对待
记录型
必须包括一个或多个由标量型、记录型、索引表型字段,类似于C语言中的structure,使用记录型可以方便的从表中取出一行数据进行处理
记录中可以有任意多个字段
记录中的字段可以有初始值并被定义为NOT NULL
说明为NOT NULL的变量或字段必须有初始值或默认值
V_A number not null (:=123|default 3);
可以在任何PL/SQL块的声明部分定义记录类型
记录类型可以嵌套
定义记录类型:
TYPE 记录类型名 IS RECORD (字段1[,字段2]…);
字段定义:字段名 {类型|变量名%TYPE|表.列%TYPE|表名%ROWTYPE} [[NOT NULL]{:=|DEFAULT}expr]
声明记录型变量:变量名 记录类型名;
类型定义:定义了类型的名字,结构,但不分配内存
变量声明:定义了变量的类型,同时分配内存
举例:
定义一个记录类型,保存职工的编号,last name和岗位
将101号职工的信息保存在记录变量中,使用dbms_output包输出信息
DECLARE
TYPE emp_record_type IS RECORD
(employee_id NUMBER(6)NOT NULL:=100,
last_name employees.last_name%TYPE,
job_id employees.job_id%TYPE);
emp_record emp_record_type;
begin
select employee_id,last_name,job_id into emp_record from employees where employee_id=101;
dbms_output.put_line(emp_record.employee_id);
dbms_output.put_line(emp_record.last_name);
dbms_output.put_li
文档评论(0)