第7章 PLSQL编程基础.ppt
《第7章 PLSQL编程基础.ppt》由会员分享,可在线阅读,更多相关《第7章 PLSQL编程基础.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章 PLSQL编程基础编程基础第第8章章 PLSQL编程基础编程基础 PL/SQL是一种数据库程序设计语言,是是一种数据库程序设计语言,是Oracle数据库系统提供的扩展数据库系统提供的扩展SQL语言。用语言。用户可以使用户可以使用PL/SQL编写过程、函数、程序包、编写过程、函数、程序包、触发器并且存储这些代码。使用触发器并且存储这些代码。使用PL/SQL语言语言可以在各种环境下对可以在各种环境下对Oracle数据库进行访问。数据库进行访问。8.1 PL/SQL概述8.1.1 PL/SQL基本结构基本结构 PL/SQLPL/SQL的块由变量声明、程序代码和异常处理的块由变量声明、程序
2、代码和异常处理的块由变量声明、程序代码和异常处理的块由变量声明、程序代码和异常处理代码代码代码代码3 3部分组成。部分组成。部分组成。部分组成。DECLAREDECLARE-声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及声明一些变量、常量、用户定义的数据类型以及游标等游标等游标等游标等 BEGIN-BEGIN-主程序体,此处用来编写各种主程序体,此处用来编写各种主程序体,此处用来编写各种主程序体,此处用来编写各种PL/SQLPL/SQL语句、语句、语句、语句、函数和存储过程函数和存储过程函数和存储过程函数和存储过程
3、 EXCEPTION-EXCEPTION-异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时异常处理程序,当程序中出现错误时执行这一部分执行这一部分执行这一部分执行这一部分,可以编写异常处理代码可以编写异常处理代码可以编写异常处理代码可以编写异常处理代码 END;END;-主程序体结束部分主程序体结束部分主程序体结束部分主程序体结束部分8.1 PL/SQL概述 8.1.2 PL/SQL结构示例结构示例SET SET ServerOutputServerOutput ON;-(ON;-(打开数据输出函数打开数据输出函数打开数据输出函数打开数据输出函数
4、)declaredeclarex varchar2(10);/*x varchar2(10);/*声明变量声明变量声明变量声明变量*/beginbeginx:=hello;x:=hello;DBMS_OUTPUT.PUT_LINE(xDBMS_OUTPUT.PUT_LINE(x的值为:的值为:的值为:的值为:|x);-|x);-输出变量输出变量输出变量输出变量x x值值值值end;end;8.1 PL/SQL概述8.1.3 PL/SQL程序注释程序注释1 1单行注释单行注释单行注释单行注释 单行注释由两个连字符单行注释由两个连字符单行注释由两个连字符单行注释由两个连字符(-)(-)开始,其注释
5、范围开始,其注释范围开始,其注释范围开始,其注释范围从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。从连字符开始,到行的末尾结束。2 2多行注释多行注释多行注释多行注释 单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每单行注释时,如果注释超过一行,就必须在每一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释一行的开头使用两个连字符。这时就采用多行注释的方式。多行注释由的方式。多行注释由的方式。多行注释
6、由的方式。多行注释由/*/*开头,由开头,由开头,由开头,由*/结尾。结尾。结尾。结尾。8.2 PL/SQL常量和变量定义8.2.1 PL/SQL字符集字符集1 1在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合在定义常量和变量时,名称必须有符合OracleOracle标标标标示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:示符的相应规定,其字符集规定如下:名称必须以字符开头。名称必须以字符开头。名称必须以字符开头。名称必须以字符开头。名称长度不能超过名称长度不能超过名称长度不能超过名称
7、长度不能超过3030个字符。个字符。个字符。个字符。名称中不能包含减号和空格。名称中不能包含减号和空格。名称中不能包含减号和空格。名称中不能包含减号和空格。不能使用不能使用不能使用不能使用PL/SQLPL/SQL保留字作为标示名,例如不能声保留字作为标示名,例如不能声保留字作为标示名,例如不能声保留字作为标示名,例如不能声明变量名为明变量名为明变量名为明变量名为DECLAREDECLARE。标识符名不区分大小写,标识符名不区分大小写,标识符名不区分大小写,标识符名不区分大小写,DBNameDBName和和和和dbnamedbname是完是完是完是完全相同的。全相同的。全相同的。全相同的。标识符
8、中可以包含数字(标识符中可以包含数字(标识符中可以包含数字(标识符中可以包含数字(0 09 9)、下划线()、下划线()、下划线()、下划线(_ _)、)、)、)、“$”$”和和和和“#”#”。8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型1 1、字符类型、字符类型、字符类型、字符类型 字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。字符类型变量用来存储字符串或者字符数据。其类型包括其类型包括其类型包括其类型包括VARCHAR2VARCHAR2、CHARCHAR、LONGLONG、NCHARNCHAR和和和
9、和NVARCHAR2NVARCHAR2。2 2、数值类型、数值类型、数值类型、数值类型 数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含数值类型变量存储整数或者实数。它包含NUMBERNUMBER、PLS_INTEGERPLS_INTEGER和和和和BINARY_INTEGER BINARY_INTEGER 3 3种基本类型。种基本类型。种基本类型。种基本类型。3 3、日期时间类型、日期时间类型、日期时间类型、日期时间类型 PL/SQLPL/SQL的日期和时间类型包括的日期和时间类型包括的日期和时间类型包括的日期和时间类型包括date
10、date类型、类型、类型、类型、timestamptimestamp类型和类型和类型和类型和intervalinterval类型。类型。类型。类型。8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型4 4、布尔类型、布尔类型、布尔类型、布尔类型 布尔类型中的惟一类型是布尔类型中的惟一类型是布尔类型中的惟一类型是布尔类型中的惟一类型是BOOLEANBOOLEAN,主要用,主要用,主要用,主要用于控制程序流程。于控制程序流程。于控制程序流程。于控制程序流程。5 5、%type%type类型和类型和类型和类型和%rowtyperowtype类型类型类型类型(1)%type(1)%type
11、类型类型类型类型 在在在在PL/SQLPL/SQL编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的编程中,为了保持某个变量的数据的类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就类型和表中某个字段的数据类型一致,这时我们就可以定义数据类型为可以定义数据类型为可以定义数据类型为可以定义数据类型为%type%type类型。类型。类型。类型。%type%type类型隐式地类型隐式地类型隐式地类型隐式地将变量的数据类型指定为对应列的数据类型。将变量的数据类型指定为对应列的
12、数据类型。将变量的数据类型指定为对应列的数据类型。将变量的数据类型指定为对应列的数据类型。%type%type类型定义变量的形式如下:类型定义变量的形式如下:类型定义变量的形式如下:类型定义变量的形式如下:Variable_nameVariable_name table_name.column_name%typetable_name.column_name%type8.2 PL/SQL常量和变量定义【例例例例8.38.3】根据表根据表根据表根据表empemp中中中中DEPTNODEPTNO字段的值,为姓名为字段的值,为姓名为字段的值,为姓名为字段的值,为姓名为SMITHSMITH的雇员修改工资
13、;若部门号为的雇员修改工资;若部门号为的雇员修改工资;若部门号为的雇员修改工资;若部门号为1010,则工资加,则工资加,则工资加,则工资加100100;若;若;若;若部门号为部门号为部门号为部门号为2020,则工资加,则工资加,则工资加,则工资加300300;否则工资加;否则工资加;否则工资加;否则工资加400400。SET SERVEROUTPUT ONSET SERVEROUTPUT ONdeclaredeclarename name scott.emp.ename%typescott.emp.ename%type:=SMITH;:=SMITH;increment increment sc
14、ott.emp.sal%typescott.emp.sal%type;fandeptfandept scott.emp.deptno%typescott.emp.deptno%type;beginbeginselect select deptnodeptno into into fandeptfandept from from scott.empscott.emp where where enameename=SMITH;=SMITH;if if fandeptfandept=10 then =10 then increment:=100;increment:=100;elsifelsif f
15、andeptfandept=20 then=20 thenincrement:=300;increment:=300;else else increment:=400;increment:=400;end if;end if;update update scott.empscott.emp set set salsal=salsal+increment where +increment where enameename=SMITH;=SMITH;commit;commit;end;end;/8.2 PL/SQL常量和变量定义8.2.2 数据类型数据类型(2)%rowtype(2)%rowtyp
16、e%type%type类型只是针对表中的某一列,而类型只是针对表中的某一列,而类型只是针对表中的某一列,而类型只是针对表中的某一列,而%rowtyperowtype类型则针对表中的一行,使用类型则针对表中的一行,使用类型则针对表中的一行,使用类型则针对表中的一行,使用%rowtyperowtype类类类类型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。型定义的变量可以存储表中的一行数据。%rowtyperowtype类型定义变量的形式如下类型定义变量的形式如下类型定义变量的形式如下类型定义变量的形式如下:Variable_nameVa
17、riable_name table_nametable_name%rowtyperowtype;8.2 PL/SQL常量和变量定义【例例例例8.58.5】使用使用使用使用%rowtyperowtype类型定义变量,如下:类型定义变量,如下:类型定义变量,如下:类型定义变量,如下:SET SERVEROUTPUT ONSET SERVEROUTPUT ONDECLAREDECLAREemp_numberemp_number constant constant scottscott.emp.empno%typeemp.empno%type:=7900;:=7900;one_empone_emp s
18、cott.empscott.emp%rowtyperowtype;beginbeginselect*into select*into one_empone_empfrom from scott.empscott.emp where where empnoempno=emp_numberemp_number;DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工编号为查询的员工编号为查询的员工编号为查询的员工编号为:|:|emp_numberemp_number););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询
19、的员工姓名为查询的员工姓名为查询的员工姓名为查询的员工姓名为:|one_emp.enameone_emp.ename););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工职位为查询的员工职位为查询的员工职位为查询的员工职位为:|:|one_emp.jobone_emp.job););DBMS_OUTPUT.PUT_LINE(DBMS_OUTPUT.PUT_LINE(查询的员工工资为查询的员工工资为查询的员工工资为查询的员工工资为:|:|one_emp.salone_emp.sal););end;end;/8.2 PL/SQL常量和变量定义6、记录
20、类型和表类型、记录类型和表类型(1)(1)记录类型记录类型记录类型记录类型 记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的记录类型与表的行结构相似,记录类型定义的变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。变量可以存储由一个或多个字段组成的一行数据。创建记录类型的语法如下:创建记录类型的语法如下:创建记录类型的语法如下:创建记录类型的语法如下:TYPE TYPE record_namerecord_name is is RECORD(
21、field_nameRECORD(field_name data_typedata_type););8.2 PL/SQL常量和变量定义【例例例例8.68.6】在在在在PL/SQLPL/SQL中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型中创建一个记录类型,然后使用该类型定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:定义一个变量,并为这个变量赋值,如下:DECLAREDECLAREtype type emp_typeemp_type is record(is record(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 PLSQL编程基础 PLSQL 编程 基础
限制150内