PL/SQL(二)PL/SQL块

PL/SQL是一种块结构的语言,一个PL/SQL程序包含了一个或者多个逻辑块,逻辑块中可以声明变量,变量在使用之前必须先声明。除了正常的执行程序外,PL/SQL还提供了专门的异常处理部分进行异常处理。每个逻辑块分为三个部分,语法是:

语法结构:PL/SQL块的语法

[DECLARE
  --declaration statements] ①
BEGIN
  --executable statements ②
[EXCEPTION
  --exception statements] ③
END;

语法解析:

① 声明部分:声明部分包含了变量和常量的定义。这个部分由关键字DECLARE开始,如果不声明变量或者常量,可以省略这部分。
② 执行部分:执行部分是 PL/SQL块的指令部分,由关键字BEGIN开始,关键字END结尾。所有的可执行PL/SQL语句都放在这一部分,该部分执行命令并操作变量。其他的PL/SQL块可以作为子块嵌套在该部分。PL/SQL块的执行部分是必选的。注意END关键字后面用分号结尾。

③ 异常处理部分:该部分是可选的,该部分用EXCEPTION关键字把可执行部分分成两个小部分,之前的程序是正常运行的程序,一旦出现异常就跳转到异常部分执行。

PL/SQL是一种编程语言,与Java和C#一样,除了有自身独有的数据类型、变量声明和赋值以及流程控制语句外,PL/SQL还有自身的语言特性:

★PL/SQL对大小写不敏感,为了良好的程序风格,开发团队都会选择一个合适的编码标准。比如有的团队规定:关键字全部大些,其余的部分小写。

★PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以是多行的,但分号表示该语句结束。一行中可以有多条SQL语句,他们之间以分号分隔,但是不推荐一行中写多条语句。

PL/SQL中的特殊符号说明:

类型 符号 说明
赋值运算符  := Java和C#中都是等号,PL/SQL的赋值是:=
特殊字符  || 字符串连接操作符。
 -- PL/SQL中的单行注释。
 /*,*/ PL/SQL中的多行注释,多行注释不能嵌套。
 <<,>> 标签分隔符。只为了标识程序特殊位置。
 .. 范围操作符,比如:1..5 标识从1到5
算术运算符  +,-,*,/ 基本算术运算符。
 ** 求幂操作,比如:3**2=9
关系运算符  >,<,>=,<=,= 基本关系运算符,=表示相等关系,不是赋值。
 <>,!= 不等关系。
逻辑运算符  AND,OR,NOT 逻辑运算符。

※变量声明

PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。声明变量的语法是:

语法格式:声明变量



变量名 数据类型[ :=初始值]



 语法解析:

数据类型如果需要长度,可以用括号指明长度,比如:varchar2(20)。

代码演示:声明变量

SQL> DECLARE
2 sname VARCHAR2(20) :=‘jerry‘; ①
3 BEGIN
4 sname:=sname||‘ and tom‘; ②
5 dbms_output.put_line(sname); ③
6 END; 

代码解析:

① 声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。
② 对变量sname重新赋值,赋值运算符是“:=”。
③ dbms_output.put_line是输出语句,可以把一个变量的值输出,在SQL*Plus中输出数据时,可能没有结果显示,可以使用命令:set serveroutput on设置输出到SQL*Plus控制台上。

对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录。

代码演示:变量赋值

SQL> DECLARE
2 sname VARCHAR2(20) DEFAULT ‘jerry‘; ①
3 BEGIN
4 SELECT ename INTO sname FROM emp WHERE empno=7934; ②
5 dbms_output.put_line(sname);
6 END;

 代码解析:

① 变量初始化时,可以使用DEFAULT关键字对变量进行初始化。

② 使用select…into语句对变量sname赋值,要求查询的结果必须是一行,不能是多行或者没有记录。

※声明常量

常量在声明时赋予初值,并且在运行时不允许重新赋值。使用CONSTANT关键字声明常量。

代码演示:声明常量

SQL> DECLARE
2 pi CONSTANT number :=3.14; --圆周率长值 ①
3 r number DEFAULT 3; --圆的半径默认值3 ②
4 area number; --面积。
5 BEGIN
6 area:=pi*r*r; --计算面积
7 dbms_output.put_line(area); --输出圆的面积
8 END;

代码解析:

① 声明常量时使用关键字CONSTANT,常量初值可以使用赋值运算符(:=)赋值,也可以使用DEFAULT关键字赋值。

在SQL*Plus中还可以声明Session(会话,也就是一个客户端从连接到退出的过程称为当前用户的会话。)全局级变量,该变量在整个会话过程中均起作用,类似的这种变量称为宿主变量。宿主变量在PL/SQL引用时要用“:变量名”引用。

代码演示:宿主常量

SQL> var emp_name varchar(30); ①
SQL> BEGIN
2 SELECT ename INTO :emp_name FROM emp WHERE empno=7499; ②
3 END;

代码解析:
① 可以使用var声明宿主变量。
② PL/SQL中访问宿主变量时要在变量前加“:”。

时间: 2024-08-04 15:54:10

PL/SQL(二)PL/SQL块的相关文章

2015/8/17笔记整理 第12章 PL/SQL编程简介1 块 过程 函数

Oracle数据库中包含一种过程化编程语言PL/SQL,PL/SQL是ORACLE对标准数据库语言的扩展. 一.PL/SQL的优点 PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理PL/SQL程序块.当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句. PL/SQL语句—

Oracle实践--PL/SQL基础之代码块

PL/SQL基础入门之代码块 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. 优点: 1.       支持SQL,可以使用:DML,DCL,游标控制和SQL运算符 2

《跨 界 之SQL、PL/SQL优化指南》目录上

优化新作,<跨 界 之SQL.PL/SQL优化指南>详细目录. 目    录 一.理论篇....................................................................10    1.1). SQL的处理过程.......................................................10    1.2). 连接方式(JOIN METHODS)................................

《跨 界 之SQL、PL/SQL优化指南》目录下

目 录 三. 常见不合理的语句........................................................100   3.1). 没有使用绑定变量....................................................100   3.2). 隐含转换............................................................101   3.3). 索引列上进行运算...........

SQL、PL/SQL、DDL、DML、TCL介绍

SQL:结构化查询语言(Structured Query Language) PL/SQL:过程化SQL语言(Procedural Language/SQL) DDL(Data Definition Language 数据定义语言) DML(Data Manipulation Language 数据操控语言) Tcl (最早称为"工具命令语言""Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言.

PL/SQL可用的SQL语句

PL/SQL是ORACLE系统的核心语言 ,现在ORACLE的许多部件都是用PL/SQL写成.在PL/SQL中可以使用的语句有: INSERT,DELETE,UPDATE,SELECT,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT. ps:PL/SQL中不能SQL语句的DDL部分,只能用SQL语句的DML部分.如果要在PL/SQL中用SQL的DDL部分,则需要用动态模式来使用.否则会报ORA-06550错误 PL/SQL可用的SQL语句

PL SQL导入导出sql/dmp文件

导出步骤: 1.tools ->export user object (导出的是建表语句(包括存储结构),选择选项,导出.sql文件 2.tools ->export tables-> SQL Inserts 选择选项导出指定某些表.sql文件 按照如图所示的勾选,成功实现导出,导入 3.tools ->export tables-> Oracle Export 选择选项导出.dmp文件 --------------------------------------------

调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG

1)查询会重复执行的情形:Result := DATASETPROVIDER.Data会触发它关联的DATASET执行一次查询 fdquery.Close; fdquery.sql.Clear; fdquery.sql.Text := sql; // d.qryOpen.Open; // 此行代码必须被注释掉,否则SQL会被二次执行 Result := DATASETPROVIDER.Data; // 此行又会触发一次fdquery进行查询 2)存储过程会重复执行的情形:Result := DA

二、 sql*plus常用命令

一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install(2).system用户是管理操作员,权限也很大.具有sysoper角色,没有create database的权限,默认的密码是manager(3).一般讲,对数据库维护,使用system用户登录就可以拉注意:也就是说sys和system这两个用户最大的

Azure云平台学习之路(二)——SQL Database

1.什么是SQL Database? 托管关系数据库,数据库即服务,IaaS的一种. 2.有哪些特点? (1)为SaaS应用提供可扩展的数据存储服务. (2)易于操作大量的数据库.稍后介绍几种操作数据库的方法. (3)性能更高,稳定性更好.基于Azure平台,高性能可扩展:多地区容灾备份. (4)接近0维护,无需维护其他硬件设备. (5)支持熟悉的功能.工具和平台. (6)安全和审核功能. 3.使用的企业有: 4.创建一个数据库. (1)进入https://manage.windowsazure