第3章_PLSQL概述
03 PLSQL基础
– identifier:用于指定变量或常量的名称
– CONSTANT:用于指定常量。当定义常量时,必须指定 它的初始值,并且其数值不能改变
– datatype:用于指定变量或常量的数据类型 – NOTNULL:用于强制初始化变量(不能为NULL)。当指 定NOTNULL选项时,必须要为变量提供数值 – =:用于为变量和常量指定初始值 – DEFAULT:用于为变量和常量指定初始值 – expr:用于指定初始值的PL/SQL表达式,可以是文本 值、其他变量、函数等
BEGIN dbms_output.put_line ('Hello, everyone!); END; / Hello, everyone!
示例二:包含定义部分和执行部分的PL/SQL块
DECLARE v_ename VARCHAR2(5); BEGIN SELECT ename INTO v_ename FROM emp WHERE empno = &no; --&no为SQL*Plus的替代变量 dbms_output.put_line('雇员名: ' || v_ename); END; / 输入 no 的值: 原值 新值 5: 5: 7788 WHERE empno = &no; WHERE empno = 7788;
常用标量类型 • VARCHAR2(n) • CHAR(n) • NUMBER(p,s) • DATE • TIMESTAMP • LONG和LONGRAW • BOOLEAN • BINARY INTEGER • BINARY_FLOAT和BINARY_DOUBLE
第章SQL与PLSQL概述
企业软件驻留在服务器, SQL*Plus驻留在客户机
➢ 三层体系结构环境;
中间层 iSQL*Plus提供了Web接口
Oracle 10g 简要介绍
常用工具
• SQL*Plus 用于命令行编写SQL查询 • PL/SQL SQL的扩展,用于编写过程代码 • Oracle Developer Suite 支持最新互联网标准的一种集成套件 • Oracle应用服务器 创建Web站点允许用户通过网页访问Oracle数据库
Oracle 10g概述
第3章 SQL与PL/SQL概述
本章要点
Oracle DBMS及其实用工具 SQL与PL/SQL简介 SQL*Plus环境及其命令
个人数据库
最初用于单用户应用程序 ACCESS,FoxPro 用于多用户环境时,数据库应用程序和数据 存储在服务器中,数据通过网络传输到个人 计算机
TNAME
TAB---------------- ------- ----------
A
TABLE
COUNTRIES
TABLE
SQL*Plus环境
SQL*Plus的特性
• 接受及时输入的语句 • 接受来自文件的SQL语句 • 提供一个行编辑器 • 对查询结果格式化 • 设置环境 • 访问本地和远程数据库
登录到SQL*Plus
Windows环境下的登录窗口 P48 图3.1 输入用户名:scott
密码 :tiger 主机串:jsjx
DOS环境下的界面
登录到SQL*Plus
SQL*Plus的基本操作
• SQL查询和SQL*Plus命令在“SQL>”提示符 下输入
plsql概要
PL/SQL程序以程序块为基本组成单位按照是否有名称来划分匿名块命名块子程序存储过程函数触发器程序包数据类型标量类型:varchar2 number char bool date timestampLob :BLOB CLOB BFILE属性类型:%type %rowtype record table varrayType name is record (v1 datetype [not null][:=value],v2 datetype [not null][:=value],v3 datetype [not null][:=value])Type name is table of element_type index by binary_integer/plsinterger/varchar2; Type name is varray(size) of element_type详情关注www。
027hpit。
com分支结构:if 条件表达式then语句块end if;if 条件表达式then语句块1else语句块2end if;if 条件表达式then语句块1elsif 条件表达式then语句块2elsif 条件表达式then语句块3elsif 条件表达式then语句块4else语句块5end if;case 条件when 值1 then 语句1;when 值2 then 语句2;else语句3;End case;casewhen 值1 then 语句1;when 值2 then 语句2;else语句3;End case;循环结构Loop循环体Exit whenEnd loop;While 条件loop循环体End loop;For i in begin..end loop循环体End loop;存储过程语法:create【or replace】procedure 过程名【(arg1 mode datatype,arg2 mode datatypeargn mode datatype)】is/as声明部分Begin执行部分Exception异常处理部分End;Mode: in out in outgrant create procedure to 用户名public int say(){}create【or replace】procedure 过程名is….Call 过程名Exec 过程名函数语法:create【or replace】function 函数名【(arg1 mode datatype,arg2 mode datatypeargn mode datatype)】return datatypeis/as声明部分Begin执行部分Exception异常处理部分End;参数的绑定位置传递名称传递=>组合传递程序包调用方式:包名.过程名/函数名语法:包头:Create [or replace] package 包名is/as公共声明部分子程序声明部分end包名;包体:Create [or replace] package body 包名is/as私有声明部分子程序实现部分end包名;详情关注www。
第三章 PLSQL
实例: 建立计算机系的学生视图, 实例:用CREATE建立计算机系的学生视图,视图名为: 建立计算机系的学生视图 视图名为: V_selection Create view V_selection AS Selection 学号,姓名,性别,班级 学号,姓名,性别, From 学生 Where 系别 计算机系” 系别=“计算机系 计算机系”
3.4 PL/ SQL控制结构 控制结构 主要介绍顺序、选择、 主要介绍顺序、选择、NULL和循环等 和循环等 4种结构。 种结构。 种结构 3.5 游标 主要介绍游标的使用。 主要介绍游标的使用。 3.6 SQL*Plus/Worksheet的使用 的使用 主要介绍编程环境的使用。 主要介绍编程环境的使用。
3. SQL命令集 SQL命令集
(1)查询命令 )查询命令SELECT 这是用得最普遍的命令,它是 这是用得最普遍的命令,它是SQL 的最主要、最核心的功能。查询的意思 的最主要、最核心的功能。 是用它来从数据库检索数据——查询数 查询数 是用它来从数据库检索数据 据库。 据库。
SELECT子句 SELECT子句 一个SELECT命令通常可以分解为三个部分: 一个SELECT命令通常可以分解为三个部分: 查找什么数 命令通常可以分解为三个部分 据? 从哪里查找? 从哪里查找? 查找条件是什么? 查找条件是什么? 故常用以下子句来表达 from p1,p2……pn where <条件表达式> <条件表达式 条件表达式> group by <分组内容> <分组内容 分组内容> having <组内条件> <组内条件 组内条件> order by <排序内容> <排序内容 排序内容> 条件表达可以用关系运算、逻辑运算和SQL运算符。 运算符。 条件表达可以用关系运算、逻辑运算和SQL运算符
plsql简介
plsql简介⼀、pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语⾔上的扩展。
pl/sql不仅允许嵌⼊sql语⾔,还可以定义变量和常量,允许使⽤条件语句和循环语句,允许使⽤例外处理各种错误,这样使得它的功能变得更加强⼤。
⼆、为什么要学pl/sql1.提⾼应⽤程序的运⾏性能2.模块化的设计思想(分页的过程,订单的过程,转账的过程。
)3.减少⽹络传输量4.提⾼安全性(sql会包括表名,有时还可能有密码,传输的时候会泄露。
PL/SQL就不会)三、Oracle为什么在PL/SQL developer执⾏很快,⽤c# oracleclient执⾏就慢因为PL/SQL这门语⾔是专门⽤于在各种环境下对Oracle数据库进⾏访问。
由于该语⾔集成于数据库服务器中,所以PL/SQL代码可以对数据进⾏快速⾼效的处理。
⽽c#语⾔是微软的产品,它在连接ORACLE的时候先存到“连接池”中,所以第⼀次会慢点,但是当你的Web程序没有重起的时候,以后的速度就不会慢了。
四、使⽤pl/sql的缺点移植性不好(换数据库就⽤不了)五、pl/sql理解1)、存储过程、函数、触发器是pl/sql编写的2)、存储过程、函数、触发器是存在oracle中的3)、pl/sql是⾮常强⼤的数据库过程语⾔4)、存储过程、函数可以在java中调⽤六、编写⼀个存储过程,该过程可以向某表中添加记录。
1、创建⼀张简单的表CREATE TABLE mytest(username VARCHAR2(30),pwd VARCHAR2(30));2、创建过程(replace:表⽰如果有insert_proc,就替换)CREATE OR REPLACE PROCEDURE insert_proc ISBEGININSERT INTO mytest VALUES('林计钦', '123456');END;/3、如何查看错误信息:show error;注意要在命令窗⼝执⾏4、如何调⽤该过程:exec 过程名(参数值1,参数值2...);eg、exec insert_proc;注意要在命令窗⼝执⾏。
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使用详细介绍一、PL/SQL的定义PL/SQL(Procedural Language / Structured Query Language),中文名“结构化查询语言/过程语言”,是一种由Oracle Corporation开发的面向专业应用的程序语言。
最早是在Oracle 6.0中推出,随着Oracle数据库的发展,经过Oracle 7.0,Oracle 8.0,Oracle 8i,Oracle 9i,Oracle 10g,Oracle 11g,Oracle 12c的不断升级,PL/SQL也在这些过程中慢慢完善。
PL/SQL是一种面向步骤的查询语言,也是一种声明式语言,也可以把它看成是一种增强版的SQL,它完全兼容SQL,支持所有的SQL命令,它可以写SQL语句,也可以把多个SQL语句封装成一个存储过程(procedure)、函数(function)、触发器(trigger)、包(package)、游标(cursor)等对象,达到控制数据库、数据的收集,处理和分析等目的,从而提高程序的执行效率,给予用户更好的功能服务。
二、PL/SQL的功能1、PL/SQL支持一系列的现代计算机语言的特性,包括:变量声明、条件执行、循环控制、次级处理程序、异常处理(类似C语言)以及更多的其他特性。
这使得PL/SQL能够很容易地编写复杂的程序。
2、PL/SQL能够使用SQL语句实现数据对象的更新和查询。
能够编写出更加复杂和有效的SQL语句,比如视图(view)、存储过程(stored procedure)、触发器(trigger)等,同时也可以使用它进行数据的事务处理(transaction processing)和数据库管理(data base management)。
PLSQL简介
数据库语言和过程语言。
PL/SQL的基本单位叫做一个区段,由三个部分组成:一个申明部分,一个可运行部分,和排除-构建部分。
因为PL/SQL允许混合SQL申明和过程结构,因此可以在将申明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL申明,没有PL/SQL,甲骨文需要就每次处理SQL申明,在网络环境中,这将影响交通流量,而且增加响应时间。
PL/SQL区段只被编译一次并且以可运行的形式储存,以降低响应时间。
背景结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。
显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。
然而,有些复杂的业务流程要求相应的程序来描述,这种情况下4GL就有些无能为力了。
PL/SQL 的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。
本文主要介绍PL/SQL的编程基础,以使入门者对PL/SQL语言有一个总体认识和基本把握。
主要特性PL/SQL编辑器,功能强大——该编辑器具有语法加强、SQL 和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。
集成调试器(要求Oracle7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行、断点、观察和设置变量、观察全部堆栈等。
基本能够调试任何程序单元(包括触发器和Oracle8对象类型),无需作出任何修改。
PLSQL简介
PL/SQL 的优点 2-1
使一组语句功能形成模块化程序开发 支持 SQL,在 PL/SQL 中可以使用: 数据操纵命令 事务控制命令 游标控制 SQL 函数和 SQL 运算符 Procedure 支持面向对象编程 (OOP),使用过程性语言控制程序结 Begin ProcedureCall 构 SQL Command Oracle … 可移植性,可运行在任何操作系统和平台上的Oralce 数 End 据库 更佳的性能,PL/SQL 经过编译执行
数字数据类型
BINARY_INTEGER
NUMBER
PLS_INTEGER
存储整数,实数和浮点数 存储有符号整数,可使 存储有符号整数,所需存储 NATURAL DECIMAL 空间少于NUMBER类型值 算术计算快速而有效 NATURALLN FLOAT POSITIVE POSITIVEN SIGNTYPE INTEGER REAL
PL/SQL 简介
PL/SQL 是过程语言(Procedural Language)与结构化查询语 言(SQL)结合而成的编程语言 PL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语 言的特点 数据操作和查询语句被包含在PL/SQL代码的过程性单元中, PL/SQL 经过逻辑判断,循环等操作完成复杂的功能或者计算 支持多种数据类型,如大对象和集合类型 可用于创建存储过程,触发器和程序包,给SQL语句的执行 添加程序逻辑 与 Oracle 服务器和 Oracle 工具紧密集成,具备可移植性, 灵活性和安全性
DECLARE – 可选部分 变量,常量,游标,用户定义异常声明 BEGIN – 必要部分 SQL语句 PL/SQL语句 EXCEPTION – 可选部分 程序出现异常时,捕捉异常并处理异常 END; – 必要部分
PLSQL简介.ppt
3
内容
PL/SQL的优点 PL/SQL块基本结构 PL/SQL块声明部分 PL/SQL块可执行部分 PL/SQL注释
4
PL/SQL的优点
在通过网络执行一个SQL语句来访问Oracle数据库时,会将各个语 句都发送到服务器,进行处理,然后执行它们,向用户返回结果 (或一个消息)。每一个SQL语句都最少需要在网络中两次经过 “旅行”,一次是从用户到服务器,另一次是从服务器到用户。这 会产生大量网络数据流量。 在过程语言SQL(Procedure Language SQL,PL/SQL)程序嵌入SQL 语句是取代执行多个SQL语句的另一种方法。PL/SQL扩展了SQL的功 能。具有如下优点:
'||v_title||'is $'||v_newretail); END;
9
基本结构
分析示例: PL/SQL块的声明部分包括一个常量(c_)和三个变量(v_)。 可执行部分使用一个SELECT语句来检索两个不同列(Title和Retail) 的内容,并将这些值存储到(INTO)在声明部分指出的变量中。 注意,在SELECT子句中对Retail列执行力算术运算,以便确定这本书 的新价格。零售价将乘以存储在c_rateincrease变量(它的值实际上 是1.20或者120%)中的数量。 在将储在声明的变量中之后,就可以使用DBMS_OUTPUT程序包(DBMS_ OUTPUT.PUT_LINE)的PUT_LINE函数显示它们。与以前在SQL*Plus中执 行的SELECT命令不同,PL/SQL块在默认情况下不会显示SELECT语句的 结果。 DBMS_OUTPUT是一个包含一组函数的程序包,用户可以应用这 些函数来显示为变量指定的值。 使用DBMS_ OUTPUT.PUT_LINE显示信息之前,需要在SQL>提示符下键入 SET SERVEROUTPUT ON , SERVEROUTPUT 环境变量指出分配一个缓冲 区来存储PL/SQL块的输出。ON可以创建缓冲区。
初步认识 PLSQL
初步认识PL/SQL1. PL/SQL 简介从学习数据库到现在,在数据库上一直使用单一的SQL 语句进行数据操作,没有流程控制。
无法开发复杂的应用。
Oacle PL/SQL 语言(Procedural Language/SQL) 是结合了结构构化查询与oacle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量声明、赋值语句,而且还有条件、循环等流程控制语句。
过程控利结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包。
PL/SQL 是一种块结构的语言,它将一组语句放在一个块中,一次性发送给服务器,PL/SQL引擎分析收到PL/SQL 语句块中的内容进行,把其中的过程控制语句由PL/SQL引擎自身去执行,把PL/SQL块中的SQL 语句交给服务器的SQL 语句执行器执行。
如图所示:PL/SQL 块发送给服务器后。
先被编译然后执行,对于有名称的PL/SQL 块(比如下一章讲解的子程序) 可以单独编译,永久的存储在数据库中,随时准备执行。
PL/SQL 的优点还有:> 支持SQLSQL 是访问数据库的标准语言,通过SQL 命令,用户可以操纵数据库中的数据。
PL/SQL支持所有的SQL 数据操纵命令、游标控制命令、事务控制命令、SQL 函数、运算符和伪列。
同时PL/SQL和SQL 诺言紧密集成,PL/SQL支持所有的SQL 数据类型和NULL 值。
> 支持面向对象编程PL/SQL支持面向对象的编程,在PL/SQL 中可以创建类型,可以对类型进行继承,可以在子程序中重载方法等。
> 更好的性能SQL 是非过程语言,只能一条一条执行,而PL/SQL 把一个PL/SQL 块统一进行编译后执行,同时还可以把编译好的PL/SQL 块存储起来,以备重用,减少了应用程序和服务器之间的通信时间,PL/SQL是快速而高效的。
> 可移植性使用PL/SQL编写的应用程序,可以移植到任何操作系统平台上的oracle 服务器,同时还可以编写可移植程序库,在不同环境中重用。
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应用实例是编写一个存储过程,用于实现数据的增、删、改、查等操作。
第3章 PLSQL
标识符命名规则
–标识符以字母开头,后边可以跟字母、数字、 货币符号$、下划线_和”#” –标识符的最大长度为30字符,并且所有字符都 是有效的。
• 合法:X v_studentID • 非法:X+y _temp TempVar
PL/SQL中常用的基本数据类型
分类
数字类型 字符类型 日期/区间类型 行标识类型 布尔类型 原始类型 LOB类型 记录类型 集合类型
PL/SQL引擎 PL/SQL块 过程化语句执行器 块中SQL语句 SQL语句 客户端应用程序 SQL执行器 数据库服务器
• PL/SQL开发工具
– – – – SQL *PLUS Procedure Builder Oracle Form、Oracle Reports PL/SQL Developer
DML语句
– PL/SQL中DML语句对标准SQL语句中的DML 语句进行了扩展,允许使用变量。
示例
DECLARE v_empno emp.empno%TYPE :=7500; BEGIN INSERT INTO emp(empno,ename,sal,deptno) VALUES(v_empno,'JOAN',2300,20); UPDATE emp SET sal=sal+100 WHERE empno=v_empno; DELETE FROM emp WHERE empno=v_empno; END;
单引号(‘):在Oracle中,应该只使用单引号 将文本和字符和日期括起来,不能使用引 号(包括单双引号)将数字括起来。 双引号("):在Oracle中,单双引号含义不同。 双引号被用来将包含特定字符或者空格的 列别名括起来。双引号还被用来将文本放 入日期格式。
数据库培训-PLSQL
数据库培训-PLSQL数据库培训 PLSQL在当今数字化的时代,数据库管理和编程技能变得愈发重要。
PL/SQL(Procedural Language/Structured Query Language)作为一种强大的数据库编程语言,在企业级应用开发中发挥着关键作用。
无论是处理复杂的业务逻辑、提高数据库性能,还是确保数据的准确性和完整性,PL/SQL 都有着出色的表现。
接下来,让我们深入了解一下PLSQL 培训的相关内容。
PL/SQL 是 Oracle 数据库对 SQL 语言的过程化扩展。
它将 SQL 语言的强大查询能力与过程化编程语言的控制结构相结合,使得开发者能够在数据库内部编写复杂的逻辑和操作。
通过使用 PLSQL,我们可以创建存储过程、函数、触发器等数据库对象,从而实现更高效、更灵活的数据处理。
在 PLSQL 培训中,首先要掌握的是基本语法。
这包括变量的定义和使用、数据类型的选择、控制结构(如条件判断、循环)等。
例如,我们可以使用`DECLARE` 关键字来定义变量,像这样:```sqlDECLAREv_name VARCHAR2(50);v_age NUMBER;BEGIN后续代码中使用变量进行操作END;```数据类型的选择也非常重要,常见的数据类型有字符型(如`VARCHAR2` )、数值型(如`NUMBER` )、日期型(如`DATE` )等。
掌握了基本语法后,接下来就是学习如何进行数据库操作。
PL/SQL 可以与SQL 语句无缝集成,方便我们对数据库中的表进行查询、插入、更新和删除等操作。
比如,要从一个名为`employees` 的表中查询数据,可以这样写:```sqlDECLAREv_employee_id NUMBER;v_employee_name VARCHAR2(50);BEGINSELECT employee_id, employee_name INTO v_employee_id,v_employee_nameFROM employeesWHERE department_id = 10;对获取到的数据进行进一步处理END;```存储过程是 PLSQL 中的重要概念之一。
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语言简介
演示 创建函数查找指定ID的员工信息
4 游标基本操作
在通过游标对表的行数据进行处理的操作过程,主要 包括以下四步:声明游标、打开游标、提取数据和关闭 游标。
1.声明游标 声明游标就是声明变量,使变量成为指定的PL/SQL控制结构。 声明游标的语法格式如下所示: CURSOR 游标名 IS SELECT语句
PL/SQL的数据类型 1 基本数据类型
类型标识符 说明 例子
Number(n)
Int Char(n) Varchar2(n) Long Date
n位数字
整型数 定长字符型,n位字符。 最大255个字符 变长字符型,n位字符。 最大2000个字符 变长字符型,最长2GB 日期型
Sal Number(5);
其中最后一行的“/”是在SQL *Plus环境中用于执行程序块的指令,“--”用于行注释,“/* */”用于块注释。
执行SQL>set serveroutput on
2 PL/SQL块的组成与应用
DECLARE xm varchar2(8):=’张琼’; zym varchar2(10):=’计算机’; zxf number(2):=45;
使用%TYPE
在PL/SQL程序中,由于常需要把表中的数据读取 到指定的变量中,为了使变量的数据类型和表中的对 应列的数据类型一致,可以直接通过%TYPE引用表中 指定列的数据类型,这样一旦表中指定列的数据类型 被修改,则在程序执行时,将自动引用新的对应数据 类型, 使用%TYPE常常是用在声明变量时,使用的 语法格式如下所示: 变量名 表名.列名%TYPE;
表5.6自定义类型student_num
表5.7表XS中学号字段的重新设计
PLSQL讲义
第一章:PL/SQL概述一、什么是PL/SQLORACLE公司发明PL/SQL为了克服SQL语言自身的一些缺陷并为那些要在ORACLE中运行核心业务提供一种完整的解决方案。
PL/SQL具有以下特点是一种高度结构化、易读易理解的语言是一种标准的、可移植的ORACLE语言,实现了编写一次到处运行是一种嵌入式语言,必须在特定的宿主环境内执行,不能编写一个PL/SQL可执行程序是一种高性能的、高集成度的数据库语言,如果你使用VB、DELPHI等进行数据库开发,最终你会发现使用PL/SQL将比其他任何语言都跟轻松高效二、改进的执行授权和事物一致性数据库和SQL语言让我们可以紧密地控制对任何个别数据库表的访问和修改,例如可以通过GRANT命令确保只有特定的角色和用户可以对指定的表执行更新操作,另一方面GRANT命令不能确保用户或者应用执行的更新操作能够正确执行,换句话说,数据库不能确保跨越多个表的事物一致性,在业务事务中涉及多个表是很常见的。
PL/SQL实现紧密地控制和管理能力是通过执行授权。
我们只是授权执行某个过程,后者控制对底层数据结构的访问。
从ORACLE8I开始,PL/SQL提供了AUTHID子句,我们可以使用之前描述的定义者权限模型,也可以使用调用者权限模型。
三、PL/SQL结构:SQL整合DeclareI_book_count int;BeginSelect count(*) into i_book_count from books where author like ‘12’;(‘123’);--改名Update books set author = ‘31’;End;说明:Declare:声明单元Begin:执行单元--:注释出现错误PL/SQL提供了强大的错误处理机制Procedure check_account(account_id_in in %type)IsI_balance_remaining number;I_balance_below_minimum exception;I_account_name %type;BeginSelect name into i_account_name from accounts where id = account_id_in;I_balance_remaining := account_balance(account_id_in);If i_balance_remaining < 1000ThenRaise i_balance_below_minimum;End if;ExceptionWhen no_data_foundThen log_error(….);When i_balance_below_minumumThen log_error(….);Raise;End;第二章:语言基础、PL/SQL块结构块:最小的有意义的代码单元,一个块就是一组代码,这个块给出了执行边界,也为变量声明和异常处理提供了作用范围,PL/SQL允许我们创建匿名块和命名块,命名块可以使包、过程、函数、触发器或者对象。
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异常处理器必须排在最后,它处理所有没有明确列出的异常。
plsql
第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对Oracle数据库进行访问。
由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理。
除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点。
本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。
还要介绍一些贯穿全书的更详细的高级概念,并在本章的最后就我们在本书案例中使用的数据库表的若干约定做一说明。
本章主要重点:l PL/SQL概述l PL/SQL块结构l PL/SQL流程l 运算符和表达式l 游标l 异常处理l 数据库存储过程和函数l 包l 触发器§1.2 SQL与PL/SQL§1.2.1 什么是PL/SQL?PL/SQL是Procedure Language & Structured Query Language 的缩写。
ORACLE的SQL 是支持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标准的产品。
PL/SQL是对SQL语言存储过程语言的扩展。
从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL。
它现在已经成为一种过程处理语言,简称PL/SQL。
目前的PL/SQL包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如C语言,Java语言等)工具中的独立引擎。
可以将这两部分称为:数据库PL/SQL和工具PL/SQL。
两者的编程非常相似。
都具有编程结构、语法和逻辑机制。
工具PL/SQL另外还增加了用于支持工具(如ORACLE Forms)的句法,如:在窗体上设置按钮等。
本章主要介绍数据库PL/SQL内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量的作用域举例
declare v_parent_number number; begin v_parent_number:=1; declare v_child_number number:=2; begin dbms_output.putline('parent+child='|| to_char(v_parent_number+v_child_number)); end; v_child_number:=3; /*未定义的标识符*/ end;
常量的声明
declare c_number constant number:=50; begin null; end;
变量的作用域
变量的作用域:在嵌套程序块中,父块本身和任 何嵌套块都是在父块中定义的标识符的作用域, 而在子块声明中定义的标识符只有在子块本身中 才处于它的作用域。 父块中定义的变量在子块中可以用,反之则不行
1
主要内容
PL/SQL程序设计简介 PL/SQL块结构 PL/SQL变量 PL/SQL运算符和函数 PL/SQL条件结构 PL/SQL循环结构
2
3.1.1 核心知识
PL/SQL是一种高级数据库程序设计语言,该语言 专门用于在各种环境下对Oracle数据库进行访问 。由于该语言集成于数据库服务器中,所以 PL/SQL代码可以对数据进行快速高效的处理。
12
3.1.3 任务驱动
任务2-编写一个PL/SQL程序,该程序输出长方形的面积, 其中长和宽的值由键盘随机输入。程序运行效果如图所示。 详细步骤见教材P52页。
13
任务2源代码
declare v_length NUMBER:=&length; v_width NUMBER:=&width; v_area NUMBER; begin v_area:= v_width* v_length; dbms_output.put_line('该长方形的面积为: '||v_area); end; /
3
3.1.1 核心知识
PL/SQL是Procedure Language & Structured Query Language 的缩写。从名字中能够看出, PL/SQL包含了两类语句:过程化语句和SQL语句, 实现了过程结构与Oracle SQL的无缝集成。应用 PL/SQL结构化程序设计语言强大的编程功能,用 户能高效应对复杂的事务处理。
* 记录成员的引用:记录变量名.成员名
3.2.1 核心知识
4.变量赋值 在PL/SQL程序中可以通过两种方式给变量赋值。 (1)直接赋值 变量名 := 常量或表达式; 例如:v_num NUMBER:=3; (2)通过SELECT..INTO赋值 SELECT 字段 INTO 变量名 例如:SELECT StuID,StuName INTO v_No, v_Name FROM TB_Student WHERE StuID='04080101';
26
%type使用举例
sno TB_Student.StuID%type; 等价于: sno char(8);
%rowtype使用举例
declare s_record TB_Student%rowtype; begin select * into s_record from TB_Student where StuID='04080102'; dbms_output.put_line('学号:'|| s_record.StuID||' 姓名:'|| s_record.StuName); end;
3.2.3 任务驱动
任务2-查找参考类型变量在声明过程中可能出现的错误, 并进行改正。 DECLARE v_a2 v_a1%TYPE;---------------------------① v_a1 NUMBER; -----------------------------② v_sname student%TYPE; --------------------③ v_grade sc.grade%TYPE; -------------------④ v_stu student.sno%ROWTYPE; ---------------⑤ v_sc sc%ROWTYPE; -------------------------⑥ BEGIN DBMS_OUTPUT.PUT_LINE('我再次把所有错误都改正了, 非常棒!'); END;
5
3.1.1 核心知识
PL/SQL的块结构如下所示 [DECLARE] /* 声明部分 -- 这部分包括PL/SQL变量,常量,游标 ,用户自定义异常等的定义 */ BEGIN /* 可执行部分 -- 这部分包括SQL语句及过程化的语 句,这部分是程序的主体 */ [EXCEPTION] /* 错误处理部分 -- 这部分包括错误处理语句 */ END;
3.1.3 任务驱动
任务3-编写一个PL/SQL程序,在PL/SQL主块中输出长方形 的面积,在PL/SQL子块中输出长方形的周长,其中长和宽 的值由键盘随机输入。程序运行效果如图所示。详细步骤 见教材P52页。
15
任务3源代码
declare v_length NUMBER:=&length; v_width NUMBER:=&width; v_area NUMBER; begin declare v_cir NUMBER; begin v_cir:= (v_width+ v_length)*2; dbms_output.put_line('子块中,该长方形的周长为 :'||v_cir); end; v_area:= v_width* v_length; dbms_output.put_line('主块中,该长方形的面积为: '||v_area); end; /
块结构的嵌套
declare v_text varchar2(20); begin v_text:='First Block'; dbms_output.put_line(v_text); declare v_more_text varchar2(20); begin v_more_text:='Second Block'; dbms_output.put_line(v_more_text); end; end; /
31
修改后的源代码
DECLARE sno_123 CHAR(8);-----------------------① v_sum NUMBER; -------------------------② v_date DATE; --------------------------③ v_num NUMBER NOT NULL:=6; ------------④ c_pi CONSTANT NUMBER(8,7):=3.14; ------⑤ v_cname VARCHAR2(10); v_tname VARCHAR2(10); ----------------⑥ BEGIN DBMS_OUTPUT.PUT_LINE('我把所有错误都改正了,真棒 !'); END;
3.1.4 实践环节
1.参照任务2编写一个PL/SQL程序,实现输出圆 的周长和圆的面积,其中圆的半径由键盘随机输 入。(注:Oracle中圆周率可用ACOS(-1)表示) 2.在任务3中,将子块中的输出语句移到子块外 面执行,是否可行?查看运行结果,并给出理由 。
17
3.2.1 核心知识
PL/SQL中可以使用标识符来声明变量、常量、游标、用户 自定义的异常等,并在SQL语句或过程化的语句中使用。 1.标识符定义 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求 相同。要求和限制有: (1)不能超过30个字符。 (2)首字符必须为字母。 (3)不区分大小写。 (4)不能使用SQL保留字。 (5)对标识符的命名最好遵循实际项目中相关命名规范。
29
序中变量的定义、数据类 型以及变量的赋值方法。
30
3.2.3 任务驱动
任务1-查找标量类型变量或常量在声明过程中可能出现的 错误,并进行改正。 DECLARE 123_sno CHAR(8);-----------------------① sum NUMBER; ---------------------------② v_date DATE; --------------------------③ v_num NUMBER NOT NULL; ---------------④ c_pi CONSTANT NUMBER(8,7); ------------⑤ v_cname, v_tname VARCHAR2(10); -------⑥ BEGIN DBMS_OUTPUT.PUT_LINE('我把所有错误都改正了,真棒 !'); END;
②字符型 CHAR[(maximum_length)] :描述定长的字符串。 VARCHAR2(maximum_length) :描述变长的字符串。 ③日期型 常用的日期类型为DATE。日期默认格式为DD-MON-YY,分别 对应日、月、年。
④布尔型 BOOLEAN 存储逻辑值TRUE或FALSE。
9
脚本的编写及执行
在记事本中编写并以***.sql 保存 运行
◦ @路径\***.sql; ◦ 匿名程序块执行方式:粘帖到SQL>后即可
3.1.2 能力目标
了解PL/SQL程序的特点和优点,掌握 PL/SQL块的基本结构。