- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 PL/SQL编程基础 概述 本章介绍数据库编程语言PL/SQL。PL/SQL 代表 Procedural Language/SQL(Procedural Language:过程语言)。 PL/SQL是Oracle的专用语言,它是对标准SQL语言的扩展。SQL语句可以嵌套在PL/SQL代码中,将SQL的数据处理能力和PL/SQL的过程处理能力结合在一起。 概述 在Oracle数据库中都内置了PL/SQL处理引擎。PL/SQL被集成在Oracle数据库服务器产品中。因此,其代码可以得到非常高效的处理,可以几乎可以从任何应用程序开发语言(如,Visual Basic、Visual C++、java)中使用或调用这些代码模块。 在PL/SQL模块中可以使用查询语句和数据操纵语句(即进行DML操作),同时引入了变量、控制结构、过程和函数等结构化程序设计的要素,这样就可以编写具有数据库事务处理功能的模块,实现复杂的程序。 PL/SQL 的体系结构 PL/SQL 的体系结构 PL/SQL 引擎是主要组件,它驻留在 Oracle 服务器中 PL/SQL 引擎 处理 PL/SQL 块并将其分离为 SQL 语句及过程语句 将过程语句发送到过程语句执行器以进行处理 将 SQL 语句发送到 SQL 语句执行器以进行处理 PL/SQL 的优点 基于事务处理,支持所有数据处理命令 支持所有数据类型和sql函数和所有对象类型 块可以命名,存储的服务器中并被其他程序或命令调用 可使用oracle工具管理pl/sql程序的安全性 PL/SQL 的优点 代码可以使用任何文本编辑器编写,方便 更佳性能、可移植性、模块化结构 整个语句块发送,提高了效率,避免了网络拥挤 过程化语言的控制结构(顺序、分支、循环)。 能进行错误处理。 PL/SQL 块结构 声明部分 可执行部分 异常处理部分 PL/SQL 块结构 PL/SQL程序的基本单元是块(BLOCK),块就是实现一定功能的逻辑模块。一个PL/SQL程序由一个或多个块组成。块有固定的结构,也可以嵌套。一个块可以包括三个部分,每个部分由一个关键字标识。 DECLARE:声明部分标志。 BEGIN:可执行部分标志。 EXCEPTION:异常处理部分标志。 END;:程序结束标志。 将相关的声明和语句进行逻辑分组 声明对于块是局部的,在块完成之后,变量将超出范围 声明:声明部分用来声明变量、常量、异常处理、游标等,以declare开始。 变量声明 变量的作用是用来存储数据,可以在过程语句中使用。变量在声明部分可以进行初始化,即赋予初值。变量在定义的同时也可以将其说明成常量并赋予固定的值。 变量的命名规则 以字母开头,后跟其他的字符序列,字符序列中可以包含字母、数值、下划线等符号,最大长度为30个字符,不区分大小写。 不能使用Oracle的保留字作为变量名。 变量名不要和在程序中引用的字段名相重,如果相重,变量名会被当作列名来使用 变量名 [CONSTANT] 类型标识符 [NOT NULL][:=值|DEFAULT 值]; 关键字CONSTANT用来说明定义的标识符是常量,如果是常量,必须有赋值部分进行赋值。 关键值NOT NULL用来说明变量不能为空。 :=或DEFAULT用来为变量赋初值。 变量可以在程序中使用赋值语句重新赋值。通过输出语句可以查看变量的值。 变量名:=值 或 PL/SQL 表达式 变量的作用域 在定义此变量的程序范围内,如果程序中包含子块,则变量在子块中也有效。但在子块中定义的变量,仅在定义变量的子块中有效,在主程序中无效。 例1、 变量的定义和初始化 SET SERVEROUTPUT ON DECLARE--声明部分标识 v_job VARCHAR2(9); v_count BINARY_INTEGER DEFAULT 0; v_total_sal NUMBER(9,2) := 0; v_date DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; v_valid BOOLEAN NOT NULL := TRUE; BEGIN v_job:=MANAGER; --在程序中赋值 DBMS_OUTPUT.PUT_LINE(v_job); --输出变量v_job的值 DBMS_OUTPUT.PUT_LINE(v_count); --输出变量v_count的值 DBMS_OUTPUT.PUT_LINE(v_date); --输出变量v_date的值 DBMS_OUTPUT.PUT_LINE(c_tax_rate); --输出变量c_tax_rate的值 END;
文档评论(0)