Oracle中PLSQL程序设计概念
plsql developer 用法
PL/SQL Developer是一个集成开发环境,专门用于Oracle PL/SQL程序设计。
以下是如何使用PL/SQL Developer的简要说明:
打开PL/SQL Developer并登陆,选择要连接的数据库。
在对象浏览器窗口界面中,找到“my object”,此处为当前登陆的用户的所有object。
在“my object”里,找到“table”文件夹,里边显示了当前账户的所有表格。
选中需要查看的表,右键点击,选中“查询数据”,即可查看数据。
打开sql window,即可在此窗口内输入sql语句,全选后点击执行即可看到结果。
选中表,右键点击,可以编辑对表进行编辑。
以上信息仅供参考,具体用法可能会因版本和具体需求略有不同。
如果在使用过程中遇到问题,建议查阅PL/SQL Developer的官方文档或寻求专业人士的帮助。
Oracle PLSQL程序设计(第6版)(上下册)
9 数字
01
02
03
04
9.1 数值型 数字类型
9.2 数字转 换
9.3 数字运 算符
9.4 数字函 数
9 数字
9.1 数值型数字类型
9.1.1 NUMBER类型 9.1.2 PLS_INTEGER类型 9.1.3 BINARY_INTEGER类型 9.1.4 SIMPLE_INTEGER类型 9.1.5 BINARY_FLOAT和BINARY_DOUBLE类型 9.1.6 SIMPLE_FLOAT和SIMPLE_DOUBLE类型 9.1.7 数字子类型
第3部分 PL/SQL程序数据
04
7 使用程序数据
7.1 程序数据 的命名
A
7.2 PL/SQL 数据类型概述
B
7.3 程序数据 的声明
C
7.4 程序员定 义的子类型
D
7.5 数据类型 转换
E
7 使用程序数据
7.2 PL/SQL数据类型概 述
7.2.1 字符数据 7.2.2 数字 7.2.3 日期、时间戳和时 间间隔 7.2.4 布尔类型 7.2.5 二进制数据类型
10.6 时间间隔的转换
10.6.1 从数字到时间间隔的转换 10.6.2 把字符串转换成间隔 10.6.3 时间间隔的格式化显示
10 日期和时间戳
10.8 CAST和EXTRACT
10.8.1 CAST函数 10.8.2 EXTRACT函数
10 日期和时间戳
10.9 日期时间的算法
10.9.1 时间间隔和日期时间的算法 10.9.2 DATE数据类型的日期算法 10.9.3 计算两个日期时间之间的时间间隔 10.9.4 DATE和TIMESTAMP混合计算 10.9.5 时间间隔的加减运算 10.9.6 时间间隔的乘除运算 10.9.7 使用不受限制的时间间隔类型
第7章 PLSQL编程基础
域。
7.2 变量与常量
标识符定义必须要满足以下规则:
必须以字母开头,长度不能超过30个字符。 标识符中不能包含减号“-”和空格。 Oracle标识符不区分大小写。 标识符不能是SQL保留字。
7.2.2 PL/SQL中的数据类型
1.标量数据类型
数值类型:存储的数据为数字,用此数据类型 存储的数据可用于计算。包括: BINARY_INTEGER、NUMBER、 PLS_INTEGER。
例7.9 使用scott方案下的emp和dept表查询职工编 号是7902的员工的姓名、工作和所在部门。 DECLARE e_name VARCHAR2(10); e_job VARCHAR2(9); e_dname VARCHAR2(14); BEGIN SELECT ename,job,dname INTO e_name,e_job,e_dname FROM scott.emp e INNER JOIN scott.dept d ON e.deptno=d.deptno WHERE empno=7902; dbms_output.put_line('该职工的姓名、工作、部门分 别是:'||e_name||' '||e_job||' '||e_dname); END;
• NUMBER(p,s)用来存储正负整数、分数和浮点型数 据,有38位的精确度,p表示精度,用于指定数字的 总位数;s用于指定小数点后的数字位数。
字符类型:用于存储字符串或字符数据。包括 :CHAR、VARCHAR2、LONG、RAW、 LONG RAW。
• PL/SQL的数据类型与SQL数据类型的长度有所不同 ,如表7-1所示。
若定义变量时指定了NOT NULL属性,那 么表示该变量在任何时刻都不允许为空, 因此在定义变量的同时也必须为变量赋值 ,否则发生错误,如下面的代码所示。 DECLARE varOne NUMBER NOT NULL; BEGIN varOne :=10; END;
Oracle PLSQL概述
Oracle PL/SQL概述由于SQL只是一种声明式语言,它没有流程控制;也不存在变量,只有表或者列,所以不能将某个SQL语句的执行结果传递给另外一个语句。
为了实现该目的,用户不得不使用一条更复杂的语句。
而且,SQL语句中更没有可以控制程序流程的IF或LOOP语句。
PL/SQL是过程化的结构查询语言(Procedural Language/Structured Query Language),它可以弥补SQL语句的不足。
在PL/SQL中可以通过IF和LOOP语句控制程序的执行流程,并且可以定义变量,以便利用这些变量在语句之间传递数据信息。
PL/SQL是Oracle的专用语言,它是对标准SQL语言的扩展,并且SQL语句可以嵌套在PL/SQL程序代码中,将SQL 的数据处理能力和PL/SQL的过程处理能力结合在一起。
在Oracle数据库内置了PL/SQL处理引擎,常用的开发工具是Oracle附带的SQL*Plus。
实际上,SQL*Plus只是用于将SQL语句或PL/SQL程序发送到数据库,并将处理后的结果显示在屏幕上的工具,并且用户也可以选择其他的工具运算SQL和PL/SQL程序。
PL/SQL程序的基本结构称为块,每一个块都包含了PL/SQL语句和SQL语句。
典型的PL/SQL块的结构如下:[declaredeclareation_statements]beginexecutable_statements[exceptionexception_handing_statements]end;PL/SQL程序块中的每一条语句都必须以分号结束,SQL语句可以是多行的,但分号表示该语句的结束。
一行中可以有多条SQL语句,但是他们之间必须以分号分隔。
PL/SQL程序的注释是由--表示。
从上面的语法规则中可以发现,一个PL/SQL程序块分为三部分:声明部分、执行部分和异常处理部分。
声明部分是可选的,它由关键字DECLARE开始,到BEGIN关键字结束。
plsql 使用手册
plsql 使用手册(最新版)目录1.PL/SQL简介2.PL/SQL的基本语法3.数据类型与变量4.控制结构5.函数与过程6.触发器与存储过程7.异常处理8.PL/SQL与SQL的交互9.PL/SQL的应用实例10.PL/SQL的优缺点及发展前景正文【PL/SQL 简介】PL/SQL(Procedural Language/Structured Query Language)是一种过程式编程语言,它是为了与 SQL(结构化查询语言)协同工作而设计的。
PL/SQL 通常用于 Oracle 数据库中,用于编写存储过程、触发器、函数等,从而实现对数据库的高级操作和控制。
【PL/SQL 的基本语法】PL/SQL的基本语法包括变量声明、数据类型、控制结构(条件语句、循环语句等)、函数与过程、触发器与存储过程等。
【数据类型与变量】PL/SQL的数据类型与SQL的数据类型基本一致,包括数字类型、字符串类型、日期类型等。
在PL/SQL中,需要先声明变量,再进行使用。
【控制结构】PL/SQL的控制结构包括条件语句(IF-THEN、IF-THEN-ELSE)、循环语句(WHILE、FOR)等,用于实现复杂的逻辑控制。
【函数与过程】函数是一种返回某个值的过程,过程则是一种不返回值的操作。
在PL/SQL 中,函数与过程可以通过参数传递数据,并返回结果。
【触发器与存储过程】触发器是一种在对表执行 INSERT、UPDATE 或 DELETE 操作时自动执行的存储过程。
存储过程是一组预先编译的 SQL 语句,可以实现复杂的业务逻辑。
【异常处理】PL/SQL中可以处理异常,通过EXCEPTION和WHEN子句可以捕获和处理异常情况。
【PL/SQL 与 SQL 的交互】PL/SQL可以与SQL进行交互,例如在PL/SQL过程中调用SQL语句,或者在SQL语句中调用PL/SQL过程。
【PL/SQL 的应用实例】一个典型的PL/SQL应用实例是编写一个存储过程,用于实现数据的增、删、改、查等操作。
PLsql简介
PL/SQLPL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。
PL/SQL是Oracle数据库对SQL语句的扩展。
在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。
目录1 PL/SQL基本概念PL/SQL是Oracle对关系数据库语言SQL的过程化扩充,它将数据库技术和过程化程序设计语言联系起来,是一种应用开发语言,可使用循环,分支处理数据,将SQL的数据操纵功能与过程化语言数据处理功能结合起来. PL/SQL的使用,使SQL成为一种高级程序设计语言,支持高级语言的块操作,条件判断,循环语句,嵌套等,与数据库核心的数据类型集成,使SQL 的程序设计效率更高.1.1 PL/SQL的作用使用PL/SQL可以编写具有很多高级功能的程序,虽然通过多个SQL语句可能也能实现同样的功能,但是相比而言,PL/SQL具有更为明显的一些优点:1.能够使一组SQL语句的功能更具模块化程序特点;2.采用了过程性语言控制程序的结构;3.可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断;4.具有较好的可移植性,可以移植到另一个Oracle数据库中;5.集成在数据库中,调用更快;6.减少了网络的交互,有助于提高程序性能。
通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,而且每条语句的执行结果也需要在网络中进行交互,占用了大量的网络带宽,消耗了大量网络传递的时间,而在网络中传输的那些结果,往往都是中间结果,而不是我们所关心的。
而使用PL/SQL程序是因为程序代码存储在数据库中,程序的分析和执行完全在数据库内部进行,用户所需要做的就是在客户端发出调用PL/SQL的执行命令,数据库接收到执行命令后,在数据库内部完成整个PL/SQL程序的执行,并将最终的执行结果返馈给用户。
《数据库》第十一章 PLSQL简介
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
给变量赋值有两种方法:
➢ 使用赋值语句 := ➢ 使用 SELECT INTO 语句
9
Inspur Education
变量和常量 2-2
set serveroutput on declare
PL/SQL 简介
PL/SQL 是过程语言(Procedural Language)与结构化 查询语言(SQL)结合而成的编程语言
PL/SQL 是对 SQL 的扩展 支持多种数据类型,如大对象和集合类型,可使用条件
和循环等控制结构 可用于创建存储过程、触发器和程序包,给SQL语句的
执行添加程序逻辑 与 Oracle 服务器和 Oracle 工具紧密集成,具备可
dbms_output.put_line(outputString);
end;
从CLOB数据中读取22个字符
/
显示读到的信息
存储到 outputString 变量中
16
Inspur Education
属性类型
用于引用数据库列的数据类型,以及表示表中一行的记 录类型
属性类型有两种:
• %TYPE - 引用变量和数据库列的数据类型 • %ROWTYPE - 提供表示表中一行的记录类
department VARCHAR2(10); BEGIN
depardtmecelnatre:= '&Dep'; IF depasrttumneanmt eNcOhTarI(N8)(;'CS','BIO','Maths','PHY') THEN
plsql使用方法
plsql使用方法PL/SQL是Oracle数据库的一种编程语言,它是Procedural Language/Structured Query Language(过程性语言/结构化查询语言)的缩写。
PL/SQL的主要作用是用于开发Oracle数据库应用程序,它可以在Oracle数据库内部直接执行存储过程、函数以及触发器等。
PL/SQL的使用方法1、PL/SQL语言的基本元素:变量、常量、运算符、条件语句和循环语句。
2、PL/SQL程序的结构:声明段、执行段和异常处理段。
3、定义变量和常量:DECLAREx NUMBER := 10; --定义变量x,并初始化为10y CONSTANT NUMBER := 20; --定义常量y,并初始化为20 BEGINNULL;END;/4、条件语句:IF boolean_expression THEN--执行一系列语句ELSEIF boolean_expression THEN--执行一系列语句ELSE--执行一系列语句END IF;5、循环语句:FOR loop_index IN [REVERSE] lower_limit..upper_limit LOOP --执行一系列语句END LOOP;WHILE boolean_expression LOOP--执行一系列语句END LOOP;LOOP--执行一系列语句EXIT WHEN boolean_expression; END LOOP;6、异常处理:BEGIN--执行一系列语句EXCEPTIONWHEN exception_name1 THEN --处理异常方式1WHEN exception_name2 THEN --处理异常方式2WHEN OTHERS THEN--处理所有其他异常情况END;7、使用游标:DECLARECURSOR cursor_name ISSELECT ...FROM ...WHERE ...;local_variable datatype;BEGINOPEN cursor_name;LOOPFETCH cursor_name INTO local_variable;EXIT WHEN cursor_name%NOTFOUND;--执行一系列语句END LOOP;CLOSE cursor_name;END;8、使用存储过程和函数:CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ]ISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ]RETURN datatypeISvariable datatype;...BEGIN--执行一系列语句EXCEPTION--处理异常END;PL/SQL是Oracle数据库中非常实用的编程语言,它可以帮助我们开发高效、可靠和可重用的应用程序。
pi sql 语法
pi sql 语法摘要:1.PI SQL 简介2.PI SQL 语法基础3.PI SQL 数据操作4.PI SQL 查询语句5.PI SQL 高级功能6.PI SQL 应用实例正文:1.PI SQL 简介PI SQL(Process Integration SQL)是一种用于处理流程集成的数据库查询语言。
它是由Oracle 公司开发的,专为Oracle Process Integrator (OPI)设计。
PI SQL 主要用于实现业务流程自动化、数据集成和实时业务处理。
它允许用户在OPI 中定义、部署和维护复杂的业务流程,同时提供了强大的数据操作和查询功能。
2.PI SQL 语法基础PI SQL 的语法基础与标准SQL 相似,包括SELECT、INSERT、UPDATE、DELETE 等常用语句。
然而,PI SQL 在标准SQL 的基础上,扩展了许多特定的功能,如流程变量、事件、条件分支等,以支持流程集成的需求。
3.PI SQL 数据操作PI SQL 允许用户对流程中的数据进行操作,包括定义、初始化、更新和查询。
用户可以使用SELECT 语句查询流程中的数据,使用INSERT、UPDATE 和DELETE 语句修改数据。
此外,PI SQL 还支持对流程数据进行聚合操作,如SUM、AVG、MAX 等。
4.PI SQL 查询语句PI SQL 提供了丰富的查询语句,包括SELECT、SELECT INTO、SELECT DISTINCT 等。
用户可以根据需求,编写复杂的查询语句,以获取所需的流程数据。
同时,PI SQL 还支持使用子查询、聚合函数等高级查询技巧。
5.PI SQL 高级功能除了基本的数据操作和查询语句外,PI SQL 还提供了许多高级功能,如存储过程、触发器、视图等。
这些功能可以提高用户在处理流程集成时的灵活性和效率。
6.PI SQL 应用实例假设有一个业务流程,需要根据订单数据生成发货通知。
1、PLSQL的概念
SQL*Plus中使用PL/SQL 15-3
• 替代变量
– PL/SQL并不是独立的编程语言,只是Oracle编程环 境的一个工具。因此,它不具备从用户接收输入的 能力。但是,在SQL *Plus中,借助于替代变量, PL/SQL语句块可以接收输入信息。替代变量不能用 于输出值,因为没有给它们分配任何存储空间。在 PL/SQL语句块发送到数据库之前, SQL *Plus会使用 实际值来替换这些替代变量。替代变量的前缀是& 或者&& – 示例2:在PL/SQL块中使用替代变量接收用户输入
PL/SQL语句块结构 2-2
• PL/SQL语句块包含3个部分:声明部分、可执行部分 以及异常处理部分。可执行部分是语句块中唯一要 求必须存在的部分。声明部分和异常处理部分是可 选的。PL/SQL语句块的结构通常如下所示:
[ DECLARE ] [ Declaration statements ] BEGIN Executable statements [ EXCEPTION ] [ Exception-handling statements ] END;
– 这是某匿名PL/SQL语句块的声明部分。首先是保留字 DECLARE,包含2个变量声明和1个常量声明。变量名v_ first_name和v_last_name的后面是数据类型和大小。常量名 c_counter的后面是保留字CONSTANT、数据类型以及所赋的 值。注意,每个声明语句后面都有一个分号
异常处理部分 3-2
• BEGIN • SELECT first_name, last_name • INTO v_first_name, v_last_name • FROM student • WHERE student_id = 123; • • DBMS_OUTPUT.PUT_LINE ('Student name: '||v_first_name||' '||v_last_name); • EXCEPTION • WHEN NO_DATA_FOUND THEN • DBMS_OUTPUT.PUT_LINE ('There is no student with '||-'student id 123'); • END;
PLSQL基础入门教程-必看
PL/SQL程序设计目录第一章PL/SQL 程序设计简介 (4)§1.2SQL与PL/SQL (4)§1.2.1 什么是PL/SQL? (4)§1.2.1 PL/SQL的好处 (4)§1.2.2 PL/SQL 可用的SQL语句 (5)§1.3运行PL/SQL程序 (5)第二章PL/SQL块结构和组成元素 (6)§2.1PL/SQL块 (6)§2.2PL/SQL结构 (6)§2.3标识符 (6)§2.4PL/SQL变量类型 (7)§2.4.1 变量类型 (7)§2.4.2 复合类型 (9)§2.4.3 使用%ROWTYPE (11)§2.4.4 LOB类型* (11)§2.4.5 Bind 变量 (11)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (13)§2.5运算符和表达式(数据定义) (13)§2.5.1 关系运算符 (13)§2.5.2 一般运算符 (13)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (14)§2.6.1 字符及数字运算特点 (14)§2.6.2 BOOLEAN 赋值 (14)§2.6.3 数据库赋值 (14)§2.6.4 可转换的类型赋值 (15)§2.7变量作用范围及可见性 (15)§2.8注释 (16)§2.9简单例子 (17)§2.9.1 简单数据插入例子 (17)§2.9.2 简单数据删除例子 (17)第三章PL/SQL流程控制语句 (18)§3.1条件语句 (18)§3.2CASE表达式 (19)§3.3循环 (19)§3.3标号和GOTO (21)§3.4NULL语句 (21)第四章游标的使用 (23)§4.1游标概念 (23)§4.1.1 处理显式游标 (23)§4.1.2 处理隐式游标 (26)§4.1.3 游标修改和删除操作 (27)第五章异常错误处理 (29)§5.1异常处理概念 (29)§5.1.1 预定义的异常处理 (29)§5.1.2 非预定义的异常处理 (30)§5.1.3 用户自定义的异常处理 (31)§5.1.4 用户定义的异常处理 (32)§5.2异常错误传播 (33)§5.2.1 在执行部分引发异常错误 (33)§5.2.2 在声明部分引发异常错误 (34)§5.3异常错误处理编程 (34)§5.4在PL/SQL中使用SQLCODE,SQLERRM (35)第六章存储函数和过程 (36)§6.1引言 (36)§6.2创建函数 (36)§6.3存储过程 (39)§6.3.1 创建过程 (39)§6.3.2 调用存储过程 (40)§6.3.3 开发存储过程步骤 (42)§6.3.4 与过程相关数据字典 (43)第七章包的创建和应用 (44)§7.1引言 (44)§7.2包的定义 (44)§7.3包的开发步骤 (45)§7.4包定义的说明 (45)§7.5子程序重载 (48)§7.6删除过程、函数和包 (50)§7.7包的管理 (50)第八章触发器 (51)§8.1触发器类型 (51)§8.1.1 DML触发器 (51)§8.1.2 替代触发器 (51)§8.1.3 系统触发器 (51)§8.2创建触发器 (51)§8.2.1 触发器触发次序 (53)§8.2.2 创建DML触发器 (53)§8.2.3 创建替代(Instead_of)触发器 (54)§8.2.3 创建系统事件触发器 (54)§8.2.4 系统触发器事件属性 (55)§8.2.5 使用触发器谓词 (56)§8.2.6 重新编译触发器 (56)§8.3删除和使能触发器 (56)§8.4触发器和数据字典 (57)§8.5数据库触发器的应用举例 (57)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。
PLSQL程序设计(Oracle)_教程宋红康_oracle_sql_plsql
PLSQL程序设计(Oracle)_教程宋红康_oracle_sql_plsql 学完了,做个⼩总结,也当做复习⼀下掌握Oracle数据库,阅读起来会顺畅⼀些什么是PL/SQL?PL/SQL全称Procedure Language & Structured Query LanguagePL/SQL是Oracle对sql语⾔的过程化扩展指在SQL命令语⾔中增加了过程处理语句(如分⼦、循环等),使SQL语⾔具有过程处理能⼒(就是对SQL语⾔储存过程语⾔的扩展) PL/SQL程序结构declare --程序的声明部分(声明变量,声明游标,声明例外等)begin --程序的执⾏部分(打印输出,if,循环等)exception --异常处理机制(plsql程序遇到错误对⾃动停⽌运⾏,提前写好exception语句则会正常执⾏完毕) --如没有异常处理机制通常省略这段代码(学习过程中基本不会⽤到)end;变量声明规则:⽰例: Hello Worldset serveroutput on; --每次第⼀次使⽤需要这条命令开启plsql程序declare--声明部分,⽤于声明某些变量,记录类型,游标等begin--程序的执⾏部分,dbms_output.put_line('Hello World');end;⽰例: 查询员⼯号(employe_id)为100的员⼯的⼯资(salary)declare--声明变量v_sal number(8,2);begin--select语句;格式: select...into...select salary into v_sal from employees where employee_id =100;--打印输出结果dbms_output.put_line(v_sal);end;。
PLSQL简介
PLSQL简介1.1 PL/SQL简介PL/SQL是ORACLE的过程化语⾔,包括⼀整套的数据类型、条件结构、循环结构和异常处理结构,PL/SQL可以执⾏SQL语句,SQL语句中也可以使⽤PL/SQL函数。
1.2 创建PL/SQL程序块DECLARE…BEGIN…EXCEPTIONEND;1.3 PL/SQL数据类型名称类型说明NUMBER数字型能存放整数值和实数值,并且可以定义精度和取值范围BINARY_INTEGER数字型可存储带符号整数,为整数计算优化性能DEC数字型NUMBER的⼦类型,⼩数DOUBLE PRECISION数字型NUMBER的⼦类型,⾼精度实数INTEGER数字型NUMBER的⼦类型,整数INT数字型NUMBER的⼦类型,整数NUMERIC数字型NUMBER的⼦类型,与NUMBER等价REAL数字型NUMBER的⼦类型,与NUMBER等价SMALLINT数字型NUMBER的⼦类型,取值范围⽐INTEGER⼩VARCHAR2字符型存放可变长字符串,有最⼤长度CHAR字符型定长字符串LONG字符型变长字符串,最⼤长度可达32,767DATE⽇期型以数据库相同的格式存放⽇期值BOOLEAN布尔型TRUE OR FALSEROWID ROWID存放数据库的⾏号例⼦:DECLAREORDER_NO NUMBER(3);CUST_NAME VARCHAR2(20);ORDER_DATE DATE;EMP_NO INTEGER:=25;PI CONSTANT NUMBER:=3.1416;BEGINNULL;END;1.4 处理PL/SQL的异常1.4.1 PL/SQL的异常例如:DECLAREX NUMBER;BEGINX:= 'yyyy';--Error HereEXCEPTION WHEN VALUE_ERROR THENDBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED');END;实现技术:EXCEPTION WHEN first_exception THEN…WHEN second_exception THEN…WHEN OTHERS THEN/*THERS异常处理器必须排在最后,它处理所有没有明确列出的异常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PL/SQL 块结构
DECLARE BEGIN
EXCEPTION
END;
匿名(Anonymous) PL/SQL 块
<header> IS|AS BEGIN EXCEPTION END;
执行函数的方法
❖在 PL/SQL 表达式部分来调用
❖使用宿主变量来获得函数的结果:
VARIABLE v_credit NUMBER EXECUT01)
❖使用本地变量获得函数的结果: DECLARE v_credit customers.credit_limit%type; BEGIN
❖在 SQL 语句调用函数时 : ❖参数必须指定到合理位置 ❖你必须是函数的主人 或者具有 EXECUTE 权限
从 SQL 调用函数的限制
❖函数调用: ❖一个SELECT 语句不能包含 DML 语句 ❖在表T上的一个UPDATE 或 DELETE语句不能 查询操作或 在同一表里不能包含 DML 语句 ❖SQL 语句不能结束事务 (不能执行 COMMIT 或 ROLLBACK)
BEGIN SELECT credit_limit INTO v_credit FROM customers WHERE customer_id = v_id; RETURN (v_credit);
END get_credit; /
❖以表达式或参数来调用函数:
EXECUTE dbms_output.put_line(get_credit(101))
Oracle中PL/SQL 程序 设计概念
课程目标
❖完成本课程, 你应该学会做下面的工作:
❖描述 PL/SQL 基本 ❖列出从SQL调用函数的限制 ❖识别显式光标如何处理 ❖处理异常 ❖使用 raise_application_error过程 ❖管理依赖关系 ❖使用 Oracle 支持的内置包
课程导向
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter1 [mode] datatype1, parameter2 [mode] datatype2, ...)]
IS|AS [local_variable_declarations; …]
BEGIN -- actions;
课程导向
❖描述 PL/SQL 基本 ❖列出从 SQL 表达式调用函数的限制 ❖PL/SQL 包的回顾 ❖识别显式光标的处理 ❖处理异常 ❖管理依赖关系 ❖使用Oracle系统支持的内置包
v_credit := get_credit(101); ... END;
❖采用参数传递给另外子程序方式来调用:
EXECUTE dbms_output.put_line(get_credit(101))
❖使用 SQL 语句 :
SELECT get_credit(customer_id) FROM customers;
存储程序部件
命名惯例
❖合适的命名惯例有下面好处:
❖容易阅读 ❖容易理解 ❖给出的信息具有广泛性 ❖容易调试 ❖确保一贯性 ❖可改善性能
存储过程(Procedures)
❖一个存储过程是:
❖可执行一系列动作的和返回一个或多个值的有名称的 PL/SQL块
❖以模式对象 (schema object)方式存储在数据库里 ❖用于改善重用性和可维护性
END [procedure_name];
存储过程: 样例
CREATE OR REPLACE PROCEDURE get_avg_order (p_cust_id NUMBER, p_cust_last_name VARCHAR2, p_order_tot NUMBER) IS
v_cust_ID customers.customer_id%type; v_cust_name customers.cust_last_name%type; v_avg_order NUMBER; BEGIN SELECT customers.customer_id, customers.cust_last_name, AVG(orders.order_total) INTO v_cust_id, v_cust_name, v_avg_order FROM CUSTOMERS, ORDERS WHERE customers.customer_id=orders.customer_id GROUP BY customers.customer_id, customers.cust_last_name; END; /
RETURN datatype IS|AS [local_variable_declarations; …]
BEGIN -- actions; RETURN expression;
END [function_name];
函数: 样例
❖创建函数:
CREATE OR REPLACE FUNCTION get_credit (v_id customers.customer_id%TYPE) RETURN NUMBER IS v_credit customers.credit_limit%TYPE := 0;
函数(Functions)
❖一个函数是:
❖必须返回一个值的命名的 PL/SQL 块 ❖以模式对象存储在数据库里 ❖他作为表达式的一部分或提供一个参数值来调用
CREATE [OR REPLACE] FUNCTION function_name [(parameter1 [mode1] datatype1, ...)]
课程导向
❖描述 PL/SQL 基本 ❖列出从 SQL 表达式调用函数的限制 ❖PL/SQL 包的回顾 ❖识别显式光标的处理 ❖处理异常 ❖管理依赖关系 ❖使用Oracle系统支持的内置包
从 SQL 调用函数的限制
❖用户定义的函数,只能从 SQL 表达式来调用: ❖必须存储在数据库里 ❖用 SQL 数据类型接受输入参数, 不能在PL/SQL指定 的类型 ❖返回的是 SQL 数据类型, 不是 PL/SQL指定的类型