PLSQL学习(一) 基础知识

合集下载

《PLSQL经典教程》课件

《PLSQL经典教程》课件

PLSQL变量与常量
了解如何定义和使用变量以及常量,实现 数据存储和常量值的复用。
PLSQL条件语句
学习使用条件语句(IF-THEN, IF-THEN-ELSE, IF-THEN-ELSIF)控制程序的执行流程。
PLSQL循环语句
掌握使用循环语句(LOOP, WHILE, FOR) 实现重复执行某一段代码的功能。
《PLSQL经典教程》PPT课 件
本课程旨在介绍PLSQL编程的基础知识和技能。通过本课程,您将全面了解 PLSQL语言的特点和高级应用,提升自己的编程能力。
简介
本课程为PLSQL经典教程PPT课件,旨在介绍PLSQL编程基础知识和技能。
第一章:PLSQL基础
PLSQL简介
PLSQL是Oracle数据库的编程语言,具有丰 富的数据处理和逻辑控制功能。
强制执行。
结束语
感谢您的耐心学习!希望本课程能对您的PLSQL编程有所帮助。
第二章:PLSQL高级应用
1
PLSQL异常处理
学习如何编写异常处理程序以及如
PLSQL游标
2
何定义和抛出异常。
了解如何定义、使用和操作游标,
处理和管理查询结果集。来自3PLSQL存储过程
学习如何定义和使用存储过程,提
PLSQL触发器
4
高编程的模块化和代码复用性。
掌握如何定义和使用触发器,实现 数据库操作的自动化和业务规则的

PLSQL讲义

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’;Dbms_output、put_line(‘123’);--改名Update books set author = ‘31’;End;Declare:声明单元Begin:执行单元--:注释出现错误PL/SQL提供了强大得错误处理机制Procedure check_account(account_id_in in accounts、id%type)IsI_balance_remaining number;I_balance_below_minimum exception;I_account_name 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;第二章:语言基础2、1、PL/SQL块结构块:最小得有意义得代码单元,一个块就就是一组代码,这个块给出了执行边界,也为变量声明与异常处理提供了作用范围,PL/SQL允许我们创建匿名块与命名块,命名块可以使包、过程、函数、触发器或者对象。

PLSQL系列培训之一:基本语法(幻灯说明稿)

PLSQL系列培训之一:基本语法(幻灯说明稿)

PL/SQL系列培训之一:基本语法第一讲分四个部分:SQL基本语法、基本逻辑控制、事务和异常SQL基本语法SQL分类数据定义语言DDL:CREATE/DROP/ALTER/COMMENT/TRUNCATE等数据操作语言DML:UPDA TE/DELETE/INSERT/CALL/SELECT FOR UPDA TE等数据控制语言DCL:GRANT/REVOKE/COMMIT/ROLLBACK等SELECT FOR UPDATESELECT FOR UPDA TE锁住某个表的相关行。

如果是多表查询:SELECT FOR UPDA TE of table.column----用来表连接时锁住其中一个表的相关行;----否则将锁住所有表(包括from子查询,不包括条件子查询)的相关行举例:SELECT t1.id, FROM test_table1 t1, test_table2 t2WHERE t1.id = t2.idFOR UPDA TE of t1.idLOCK TABLELOCK TABLE table_name IN lockmode MODE (NOWAIT)LOCK TABLE tanjie21 IN SHARE UPDATE MODE; --同下LOCK TABLE tanjie21 IN ROW SHARE MODE; --行共享锁,其他会话无法获得排他锁LOCK TABLE tanjie22 IN ROW EXCLUSIVE MODE; --行排他锁,禁止SHARE锁定--UPDATE/DELETE/INSERT自动获得LOCK TABLE tanjie23 IN SHARE MODE; --表共享锁LOCK TABLE tanjie24 IN EXCLUSIVE MODE; --表排他锁LOCK TABLE tanjie25 IN SHARE ROW EXCLUSIVE MODE; --表级共享行级排他W AIT/NOW AITNOWAIT --报ora-00054WAIT integer(秒) --报ora-30006EXECUTE IMMEDIATE处理动态SQL的两种方式:(1)EXECUTE IMMEDIA TE(2)OPEN-FOR, FETCH, and CLOSE性能优化(以后再讲):BULK EXECUTE IMMEDIA TEEXECUTE IMMEDIA TE的完整语法:EXECUTE IMMEDIATE dynamic_SQL_string[INTO defined_variable1, defined_variable2, ...][USING [IN | OUT | IN OUT] bind_argument1, bind_argument2, ...] [RETURNING INTO | RETURN bind_argument1, bind_argument2, ...]使用INTO子句确定返回的是单行查询结果(与SELECT INTO类似)SUB QUERY标准子查询:和主查询没有直接联系,在ORACLE中首先执行且只执行一次关联子查询:在执行过程中需要与主查询发生联系,如子查询的条件依赖于主查询传递的条件。

PLSQL学习笔记

PLSQL学习笔记

(五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
SELECT:
SELECT 查询列表 FROM 数据源;
*&* SQL命令必须加分号。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用户 解锁
给HR解锁
主要用于通配固定位数的字符。例如查询月收入五位数以上的员工。五位ห้องสมุดไป่ตู้可以用'_'来查询。
逻辑操作符(用在WHERE子句中)
AND
OR
NOT
先执行 NOT ,再执行 AND 最后执行 OR。
ORDER BY
ORDER BY子句在 SELECT 语句的最后。
ASC:升序
(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、
SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。
(四)数据定义语句:对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改
定义空(NULL)值
空值出现在表达式中会导致整个表达式的值为空。
NVL(字段名,将要赋予的值)函数
作用:将空值转换成其他有ASCLL码的值。
annual_salary年薪
别名
可以加中文的字段别名。
如果想强制地改变列名的大小写,可以在别名的定义时加上双引号,列名有空格时也要在列名上加双引号。
以上函数都是返回string的一部分,从字符位置A开始,长为B个字符。如果A是0,那它就被认为是1(字符串的开始位置)。如果A是正数,那么字符从左边开始数。如果是负数,则从STRING的末尾开始,从右边数。如果B不存在,那么缺省是整个字符串。如果B小于1,将返回NULL。如果A或B使用了浮点数,那么该数值首先被节取成一个整数,返回类型与STRING相同。

第一章 plsql介绍标准版文档

第一章 plsql介绍标准版文档
SELECT first_name,last_name,major into v_Student FROM students WHERE id=10000;
End; (select语句中的列顺序与在记录变量中的字段顺序一致)
• %TYPE和%ROWTYPE
使用%TYPE属性
%type用于变量类型的声明中。也可以用于保证定义的变量 的数据类型和长度与数据库表中的列保持一致。
声明变量的语法: 变量名 类型〔constant〕[not null] [:=value];
注意:在声明部分,每一行只能有一个变量声明,如以下的 声明是错误的:
Declare v_firstname , v_lastname varchar2(20);
正确的声明为: Declare
v_firstname varchar2(20);
声明变量必须提供变量名称和数据类型。
变量名称遵循以下约定:
(1)以一个字母字符开头
(2)最多包含30个字符
(3)可以包含大写和小写字母、数字以及_、$、# 及其它特殊字符。
(1)PL/SQL的基本数据类型
BINARY_INTEGER NUMBER[(precision,scale)] CHAR[(maximum_length)] LONG LONG RAW VARCHAR2(maximum_length) DATE BOOLEAN
PL/SQL的复合数据类型 标量变量非常有用,但很多时候,需要处理逻辑的数据组,
于是PL/SQL提供了复合的数据类型,允许创建一个变量,可以 将不同数据类型的多个值存储为一个单独的单元。 把复合数据类型分为两种: (1)复合数据类型:主要是记录数据类型和记录表类型 (2)集合数据类型:主要是按索引组织表类型、嵌套表类型和 数组类型。

PLSQL(1)

PLSQL(1)

PLSQL培训一、PLSQL简介PLSQL是ORACLE公司对SQL的一个扩展,也就相当于微软所扩展的TSQL一样。

它是一种过程化的语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构,PLSQL可以执行SQL语句,SQL语句中也可以使用PLSQL函数。

二、PLSQL的数据类型只列出我们使用的VARCHAR2:可变长度字符串;注意:VARCHAR2 定义的长度为字节长度INT(INTEGER):整数;NUMERIC(M,N):小数;DATE:日期;BOOLEAN:布尔数。

Type:记录类型。

三、PLSQL DEV的使用。

四、PLSQL重要的一个组成:块DECLARE …;BEGIN…END;DECLARE :为声明部分,主要是声明这个块中用的变量,例:DECLARE V_CNT INT;该示例声明(或者说定义)了一个V_CNT的整形变量,与TSQL变量区别是变量名无需以@开头。

给变量赋值:V_CNT := 1;注1:赋值时候可以像程序语言一样直接赋值,赋值符号为:=;注2:在声明时候可以赋默认值,有如下两种方式:DECLARE V_CNT1 INT:=1; V_CNT2 INT DEFAULT2;注 3:另外一种赋值方式(如果是对一个变量直接赋一个静态值不要采取这种方式) DECLARE V_CNT INT;BEGINSELECT COUNT(*)INTO V_CNT FROM USER_TABLES;DBMS_OUTPUT.PUT_LINE(V_CNT);END;块中可以包含子块,类似于在程序语言中的一个函数体内部嵌入一个子函数体,而在子块中可以定义和父块中相同的变量名,在此,变量作用域与其他编程语言类似,子域中的变量覆盖父域中的变量。

块也可以加上名称,变为有名块。

BEGIN<<BLOCK1>>DECLARE V_CNT INT;BEGINV_CNT:=1;BEGIN <<BLOCK2>>DECLARE V_CNT INT;BEGINDBMS_OUTPUT.PUT_LINE(V_CNT);V_CNT:= 2;END;END;DBMS_OUTPUT.PUT_LINE(V_CNT);END;END;注:红色部分为子块,若需要引用父块中的变量,可以按如下方式引用父块名.变量名存储过程,函数都可以理解为一个指定了名字的块。

PLSQL语言基础

PLSQL语言基础

上机4PL/SQL语言基础上机内容1. 程序结构2. 流程控制3. 异常处理4. 开发动态SQL上机目标1. 掌握PL/SQL程序结构2. 掌握PL/SQL流程控制3. 掌握PL/SQL异常处理4. 掌握PL/SQL中开发动态SQL的方法阶段1指导部分训练内容PL/SQL块程序结构中的数据类型需求说明在VALUES子句中使用记录变量插入数据是Oracle 9i新增的特征。

在VALUES子句中使用记录变量插入数据时,列的顺序、个数、类型必须与记录成员的顺序、个数、类型完全匹配,如图2.4.1所示。

在VALUES子句中使用记录变量图2.4.1 在VALUES子句中使用记录变量另外,从Oracle 9i开始,在SET子句中不仅可以使用记录成员,而且还可以直接使用记录变量。

当在SET子句中使用记录变量更新数据时,列的顺序、个数、类型必须与记录成员的顺序、个数、类型完全匹配。

现要求实现:由用户输入部门编号,通过在SET子句中使用记录变量的方式来修改指定部门信息。

实现思路定义一个关于DEPT部门表的%ROWTYPE变量,让用户通过替换变量给其中的deptno部门编号赋值,通过UPDATE语句进行更新,如图2.4.2所示。

注意使用ROW关键字图2.4.2 在SET子句中使用记录变量练习部分(一)需求说明索引表(TABLE)类型不仅可以在PL/SQL中直接使用,也可以作为表列的数据类型使用。

在表列中使用索引表类型时,必须首先使用CREATE TYPE命令创建索引表类型。

需要注意的是,当使用索引表类型作为列的数据类型时,必须为索引表列指定专用的存储表。

例如,需要存储一个会员(TB_VIPInfo)信息时,需要记录该会员的联系方式,但该会员的联系方式可能有多个,因此可以考虑在记录会员联系方式的列上使用索引表。

创建一个关于会员信息表,并使用索引表类型作为该表中的某列,如图2.4.3所示。

图2.4.3 在表列中使用索引表要求:(1)为索引表列插入数据。

PLSQL基础

PLSQL基础
触发器(trigger) 触发器与一个表或数据库事件联系在一起的, 当一个触发器事件发生时,定义在表上的触发器被触发。 CREATE [OR REPLACE] TRIGGER trigger_name {before|after|instead of} event ON {table_or_view_name|DATABASE} [FOR EACH ROW[WHEN condition]] trigger_body
函数
函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个输入 参数,有一个返回值,返回值的数据类型在创建函数时定义。 定义函数的语法如下: FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS [local declarations] BEGIN execute statements [EXCEPTION exception handlers] END [name]
包(package)
包其实就是被组合在一起的相关对象的集合,当包中任何函数或存储过 程被调用,包就被加载入内存中,包中的任何函数或存储过程的子程序访 问速度将大大加快。包由两个部分组成:规范和包主体(body),规范描述 变量、常量、游标、和子程序,包体完全定义子程序和游标。
触发器(trigger)
结束!谢谢!
PL/SQL块结构
声明部分(Declaration section) 声明部分包含了变量和常量的数据类型和初始值。 这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽 略这一部分;需要说明的是游标的声明也在这一部分。 执行部分(Executable section) 执行部分是PL/SQL块中的指令部分,由关键字 BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也 可以放在这一部分。 异常处理部分(Exception section) 这一部分是可选的, 在这一部分中处理异常或错误。

PLSQL基础(一)

PLSQL基础(一)

Error-Reporting Functions
在PL/SQL中有两个方法SQLCODE和 SQLERRM通过这两个方法,我们可以得到 SQL语句执行后的相关信息。
Expressions - 2
条件表达式 AND,OR和NOT的用法基本上同其他的变成语言。 对于有NULL参与的逻辑判断 DECLARE x NUMBER := 1; y NUMBER := NULL; BEGIN IF x = y THEN DBMS_OUTPUT.PUT_LINE(‘x = y’); ELSIF x != y THEN DBMS_OUTPUT.PUT_LINE(‘x != y’); ELSE DBMS_OUTPUT.PUT_LINE(‘I DO NOT KNOW’); END IF; END; Result : I DO NOT KNOW
BETWEEN和IN的判断操作 (x BETWEEN a AND b)就相当于(x>=a) AND (x<=b) x IN (set) 就是判断x是否是这个set的成 员
Expressions - 5
CASE WHEN判断式 DECLARE grade CHAR(1); result VARCHAR(10); BEGIN result := CASE WHEN grade IS NULL THEN ‘NOTHING’ WHEN grade = ‘A’ THEN ‘GOOD’ WHEN grade = ‘B’ THEN ‘BAD’ ELSE ‘DANGER’ END; END;
Lexical Units - 2
变量名的定义方法 必须要以英文字母开头 变量中可以有[$] [#]和[_] 声明的变量名的长度不能超过30byte 如果需要用数字,其他符号或者是日文来命 名的情况下,请一定要使用[” ”]将变量括起 来。

PLSQL基础教程 (1)

PLSQL基础教程 (1)

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 变量 (12)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (14)§2.5运算符和表达式(数据定义) (14)§2.5.1 关系运算符 (14)§2.5.2 一般运算符 (14)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (15)§2.6.1 字符及数字运算特点 (15)§2.6.2 BOOLEAN 赋值 (15)§2.6.3 数据库赋值 (15)§2.6.4 可转换的类型赋值 (16)§2.7变量作用范围及可见性 (16)§2.8注释 (17)§2.9简单例子 (18)§2.9.1 简单数据插入例子 (18)§2.9.2 简单数据删除例子 (18)第三章PL/SQL流程控制语句 (19)§3.1条件语句 (19)§3.2CASE表达式 (20)§3.3循环 (20)§3.3标号和GOTO (22)§3.4NULL语句 (23)第四章游标的使用 (24)§4.1游标概念 (24)§4.1.1 处理显式游标 (24)§4.1.2 处理隐式游标 (27)§4.1.3 游标修改和删除操作 (28)第五章异常错误处理 (30)§5.1异常处理概念 (30)§5.1.1 预定义的异常处理 (30)§5.1.2 非预定义的异常处理 (31)§5.1.3 用户自定义的异常处理 (32)§5.1.4 用户定义的异常处理 (33)§5.2异常错误传播 (35)§5.2.1 在执行部分引发异常错误 (35)§5.2.2 在声明部分引发异常错误 (35)§5.3异常错误处理编程 (36)§5.4在PL/SQL中使用SQLCODE,SQLERRM (36)第六章存储函数和过程 (38)§6.1引言 (38)§6.2创建函数 (38)§6.3存储过程 (41)§6.3.1 创建过程 (41)§6.3.2 调用存储过程 (42)§6.3.3 开发存储过程步骤 (44)§6.3.4 与过程相关数据字典 (45)第七章包的创建和应用 (46)§7.1引言 (46)§7.2包的定义 (46)§7.3包的开发步骤 (47)§7.4包定义的说明 (47)§7.5子程序重载 (50)§7.6删除过程、函数和包 (52)§7.7包的管理 (52)第八章触发器 (53)§8.1触发器类型 (53)§8.1.1 DML触发器 (53)§8.1.2 替代触发器 (53)§8.1.3 系统触发器 (53)§8.2创建触发器 (53)§8.2.1 触发器触发次序 (55)§8.2.2 创建DML触发器 (55)§8.2.3 创建替代(Instead_of)触发器 (56)§8.2.3 创建系统事件触发器 (57)§8.2.4 系统触发器事件属性 (57)§8.2.5 使用触发器谓词 (58)§8.2.6 重新编译触发器 (59)§8.3删除和使能触发器 (59)§8.4触发器和数据字典 (59)§8.5数据库触发器的应用举例 (60)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。

第5章plsql语言基础(1)

第5章plsql语言基础(1)

END;
END;
PL/SQL环境
PL/SQL Engine PL/SQL Block
PL/SQL Block
non-SQL SQL
Procedural Statement Executor
SQL Statement Executor Oracle10g Server
5.2 PL/SQL组件
声明部分 执行部分 异常处理部分
声明部分
PL/SQL中常用数据类型:
• BLOB。二进制大对象,可以用来保存图像和文档等 二进制数据。 BOOLEAN。布尔数据类型,支持TRUE/FALSE值。 CHAR。固定长度字符串。 CLOB。字符大对象,可用来保存多达4GB的字符数 据。 DATE。存储全部日期的固定长度字符串。 LONG。可变长度字符串。 NUMBER。可变长度数值。 RAW。二进制数据的可变长度字符串。 VARCHAR2。可变长度字符串。
声明部分
(1)声明常量。声明常量的基本格式:
<常量名> constant <数据类型> := <值>;
关键字constant表示声明的是常量。 【例】定义常量conVersion,保存指定产品的版本信息。 然后调用dbms_output.put_line输出常量的值:
SET ServerOutput ON; DECLARE conVersion constant VARCHAR2(20) := '10.2.0.1.0'; BEGIN dbms_output.put_line(conVersion); END; /
DECLARE V_sal emp.sal%type; BEGIN SELECT sal into v_sal from emp where empno=7788; IF v_sal<500 THEN UPDATE emp set sal=sal*1.5 where empno=7788; ELSIF v_sal<1500 THEN UPDATE emp set sal=sal*1.3 where empno=7788; ELSIF v_sal<3000 THEN UPDATE emp set sal=sal*1.1 where empno=7788; ELSE UPDATE emp set sal=sal*2.0 where empno=7788; END IF; COMMIT; END; /

plsql基础(数据类型、定义变量)、游标、过程、函数、包、触发器(系统触发器)

plsql基础(数据类型、定义变量)、游标、过程、函数、包、触发器(系统触发器)

【原创】oracle的学习六:pl/sql基础(数据类型、定义变量)、游标、过程、函数、包、触发器(系统触发器)2011-07-27 21:42:48| 分类:ORACLE | 标签:pl/sql基础数据类型定义变量游标、过程、函数包、触发器|字号大中小订阅1.PL/SQL的介绍∙pl/sql是什么pl/sql是oracle在标准sql语言上的扩展。

pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用另外处理各种错误,功能强大。

∙为什么学pl/sql优点:1.提高应用程序的运行性能2.模块化得设计思想3.减少网络传输量4.提高数据库访问的安全性缺点:移植性不好∙开发工具:环境设置:∙页大小和行大小:set pagesize 50 linesize 120;∙更改日期格式:alter session setnls_date_format='YY-MM-DD HH24:MI:SS';∙为使用程序包DBMS_OUTPUT中的PUT_LINE过程输出: set serveroutput on;1.sqlplus---oracle公司提供的一个工具。

2.pl/sql developer 开发工具pl/sql developer 是用于开发pl/sql块的IDE,独立的产品。

举例:创建过程:create [or replace ] procedure 过程名is begin----执行过程end;/replace:表示如果存在过程名,就替换。

--:注释查看错误信息:show error调用过程:法一:exec 过程名(参数列);法二:call 过程名(参数列);∙块的类型所有的PL/Sql程序都是以块为基本单位。

块包含过程化语句和DML 语句。

块的分类:∙匿名块:出现在应用程序中的、没有名字、不存储在数据库中的块。

可以出现在SQL语句出现的地方。

可以调用其他程序,不能被调用。

教学文档PlSQL基础

教学文档PlSQL基础

目录1知识点 (1)1.1上次课程的主要知识点 (1)1.2本次预计讲解的知识点 (2)2具体内容 (2)2.1PL/SQL基础 (2)2.2PL/SQL条件分支与循环 (6)2.3动态SQL (6)2.4异常处理 (7)3 总结 (9)4 作业 (9)课程名称:Pl/SQL基础1知识点1.1上次课程的主要知识点Oracle概述体系结构→ Oracle Server –[实例(SGA+后台进程),数据库(*.dbf,*.ctl,*log)] 数据库的逻辑结构◆表空间tablespace◆段[数据段,索引段,回退段,临时段] Segment◆区[extents]◆块block◆模式对象[表,视图,索引,子程序…]启动与关闭用户与角色◆每个用户都有默认的表空间和临时表空间◆如果某用户需要创建表,则必须至少三个权限:●创建会话create session●创建表create table●使用表空间权限:⏹alter user 用户名quota xxM|unlimited on 表空间名称1.2 本次预计讲解的知识点PL/SQL基础PL/SQL条件分支与循环动态SQL异常处理Exception2具体内容2.1 PL/SQL基础1. PL/SQL简介Procedure Language & Structured Query Language的缩写作为Oracle的重要组件.PL/SQL是对SQL语言的扩展标准ANSI – SQL 92/ 99分为六大类:扩展:2. PL/SQL块分类匿名块pl/sql块脚本→运行时发送到服务器端→pl/sql引擎→运行结果命名块→子程序[存储在服务器端]3. PL/SQL的组成4. PL/SQL 规范化标识符5. Pl/SQL类型6. PL/SQL声明变量示例:7. 为变量赋值两种方式:使用:=使用select … into 变量名8. 常量2.2 PL/SQL条件分支与循环2.3 动态SQL在编译时,仅作为字符串进行处理,执行时,再动态的绑定参数,编译执行.增强pl/sql 灵活性.执行动态SQL 的语法:EXECUTE IMMEDIATE dynamic_sql_string[INTO define_variable_list][USING bind_argument_list];为什么需要使用动态sql?⏹动态可以动态拼接SQL语句,绑定参数,灵活性增强⏹可以执行DDL语句2.4 异常处理有两种类型的异常错误预定义--系统自动引发用户自定义--手工通过raise引发异常. [throw]--为变量赋值select ename into v_ename from emp;dbms_output.put_line('变量ename的值: '||v_ename);exceptionwhen too_many_rows thendbms_output.put_line('返回了多行数据!!!');when no_data_found thendbms_output.put_line('没有发现对应的数据!!!');when others thendbms_output.put_line('其他错误: '||sqlerrm);end;dbms_output.put_line('程序执行此行!!!');end;用户自定义异常:1> 声明异常的变量2> 根据条件引发自定义异常raise3> exception when 捕获并处理自定义异常declaree_invalidKind exception; --定义异常变量v_kind varchar2(10) := '&"请输入类别号<A,B,C,D>"';beginif(v_kind not in ('A','B','C','D')) thenraise e_invalidKind; --引发异常elsedbms_output.put_line('您选择的类别为: '||v_kind);end if;exceptionwhen e_invalidKind then-- 捕获异常dbms_output.put_line('输入的类别无效!');end;3 总结PL/SQL 是一种可移植的高性能事务处理语言PL/SQL 引擎驻留在Oracle 服务器中PL/SQL 块由声明部分、可执行部分和异常处理部分组成PL/SQL 数据类型包括标量数据类型、LOB 数据类型和属性类型 PL/SQL支持动态SQL控制结构包括条件控制、循环控制和顺序控制运行时出现的错误叫做异常异常可以分为预定义异常和用户定义的异常4 作业。

第1章PLSQL基础知识

第1章PLSQL基础知识

第1章PLSQL基础知识Oracle数据库PL/SQL开发----PL/SQL基础知识章节目标了解/的基本概念了解PL/SQL的基本概念掌握PL/SQL块的基本组成区分/变量和非/变量?区分PL/SQL变量和非PL/SQL变量?掌握如何声明变量掌握如何对变量进行赋值掌握%TYPE的使用理解在/SQ中SQ语句的作用?理解在PL/SQL中SQL语句的作用本章主要内容知识点掌握程度难易程度项目介绍介绍背景项目了解为什么使用PL/SQL 什么是PL/SQL 理解PL/SQL的优点了解PL/SQL结构块类型了解理解块结构变量声明语法掌握数据类型:标量类型掌握数据类型:复合类型了解数据类型外部变量数据类型:外部变量了解变量赋值掌握函数及注释注释掌握PL/SQL函数的应用:有效函数掌握PL/SQL函数的应用:无效函数掌握与Oracle的交互PL/SQL中的SELECT语句掌握PL/SQL中的DML语句掌握PL/SQL中的事务处理语句掌握PL/SQL概述什么是PL/SQL发专用的种程序设计?PL/SQL是由Oracle开发,专用于Oracle 的一种程序设计语言PL代表Procedural LanguageProcedural LanguageSQL代表Structured Query LanguagePL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语言的特点PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在/Q代码的程序单元中?PL/SQL(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.PL/SQL的优点改善了性能PL/SQL以整个语句块发送给服务器,这个过程在单次调用中完成,降低了网络拥挤。

而如果不使用PL/SQL,每条SQL语句都有单独的传输交互,在网络环境下占用大量的服务器时间,同时导致网络拥挤。

服务器时间同时导致网络拥挤可重用性PL/SQL能运行在任何ORACLE环境中(不论它的操作系统和平台),在其他ORACLE能够运行的操作系统上无需修改代码。

PLSQL学习简易快速入门

PLSQL学习简易快速入门

PLSQL学习简易快速入门课程一 PL/SQL 基本查询与排序本课重点:1、写SELECT语句进行数据库查询2、进行数学运算3、处理空值4、使用别名ALIASES5、连接列6、在SQL PLUS中编辑缓冲,修改SQL SCRIPTS7、ORDER BY进行排序输出。

8、使用WHERE 字段。

一、写SQL 命令:不区分大小写。

SQL 语句用数字分行,在SQL PLUS中被称为缓冲区。

最后以;或 / 结束语句。

也可以用RUN来执行语句二、例1:SQL> SELECT dept_id, last_name, manager_id FROM s_emp;2:SQL> SELECT last_name, salary * 12, commission_pct FROM s_emp;对于数值或日期型的字段,可以进行相应的四则运算,优先级与标准的高级语言相同。

SQL> SELECT last_name, salary, 12 * (salary + 100) FROM s_emp;三、列的别名ALIASES:计算的时候特别有用;紧跟着列名,或在列名与别名之间加“AS”;如果别名中含有SPACE,特殊字符,或大小写,要用双引号引起。

例(因字体原因,读者请记住:引号为英文双引号Double Quotation):SQL> SELECT last_name, salary, 12 * (salary + 100) ”Annual Salary” FROM s_emp;四、连接符号:||连接不同的列或连接字符串使结果成为一个有意义的短语:SQL> SELECT first_name || ’’ || last_name || ’, ’|| title ”Employees” FROM s_emp SQL> select divid ||' '|| divname from pub_t_division_test wheresuperid='001'效果如下图:五、管理NULL值:SQL> SELECT last_name, title, salary * NVL(commission_pct,0)/100 COMM FROMs_emp;此函数使NULL转化为有意义的一个值,相当于替换NULL。

PLSQL基础培训PPT课件

PLSQL基础培训PPT课件
PL_SQL基础培训
PL/SQL 语言
SQL中操作符的使用
定义:操作符是保留的字或字符,主要用于比 较和算术运算。
分类:比较操作符,逻辑操作符和算术运算符。 1、比较操作符
包括:=,<>, >, <, <=, >=。 注意比较双方的数据类型。 2、算术运算符 包括:+,-,*,/等。 与数学运算规则一致。
PL/SQL 语言
PL_SQL基础培训
通过本章的学习应该掌握:
PL/SQL语言的编程规范 Oracle数据库的基本数据类型和函数 应用PL/SQL语言编写基本的sql
PL_SQL基础培训
一、PL/SQL语言编程规范 1)命名
语言---命名使用能表述对象意义的单词或者约定俗成的符号,不允 许使用中文或者特殊符号。
单词分隔---命名的各单词使用下划线进行分隔。 保留字----命名禁止使用sql保留字(可以在v$reserved_words视
图中查找所有的保留字)。 命名长度---限制在30个字符内(含前缀)。
PL_SQL基础培训
2)命名规范
普通变量---前缀为v_,存放字符、数字、日期型变量。 游标变量---前缀为cur_,存放游标记录集。 存储过程---前缀为p_,按照业务操作命名。 函数---前缀为f_,按照业务操作命名。 包---前缀为pkg_,按照业务操作集合命名。 触发器---前缀为trig_,触发器名是前缀+表名+触发器名 索引---前缀为IDX_,索引名是前缀+表名+索引字段
Sequence_of_statement1; ELSE
Sequence_of_statement2; END IF;
PL_SQL基础培训

PLSQL基础

PLSQL基础

1、PL/SQL概述:PL/SQL(Procedural Language/SQL)是Oracle在标准SQL语言上的过程性扩展。

PL/SQL不仅允许嵌入SQL语句,而且允许定义变量和常量,允许使用条件和循环语句,允许使用异常处理各种错误。

2、PL/SQL块结构:块是pl/sql的基本程序单元,一个PL/SQL块中可以嵌套其他PL/SQL块,而且嵌套层次没限制。

PL/SQL块由三部分组成:定义部分、执行部分、异常部分。

如下所示:declare--可选定义部分:定义常量、变量、复杂数据类型、游标等begin--执行部分:执行PL/SQL语句和SQL语句exception--可选异常处理部分:处理运行错误end;--块结束3、PL/SQL块的分类:☆匿名块:没有名称的PL/SQL块,通常动态生成,只能执行一次,不能存储在数据库中。

☆命名块:有特定名称的PL/SQL块,名称通过块首<<block name>>标签来指定,可嵌套。

☆子程序:存储在数据库中的过程、函数、包。

生成后可被多次调用☆触发器:隐含执行的存储过程,当特定事件发生时自动被调用执行。

4、PL/SQL定义变量及其使用PL/SQL定义变量或常量的语法:<identifierName> [constant] <datatype> [not null] [:=expr]解释说明:identifierName是变量或常量名,由自己按命名规则取名;constant说明定义的是常量,当使用constant时,必须指定初始值,且在运行过程中数值不能改变;datatype用于指定变量或常量的数据类型,如varchar2;not null表示必须为变量赋初值;:=用于为变量或常量指定初始值;expr为初始值。

例子:declarev_ename varchar2(20);--定义变量v_sal number(6,2);beginv_ename:=’张三’;--为变量赋值v_sal:=2300.00dbms_output.put_line(v_ename||v_sal);--要显示结果先得执行set serveroutput on;select ename,sal into v_ename,v_sal from emp where empno=7369;--查询语句为变量赋值dbms_output.put_line(v_ename||v_sal);end;/ --斜杠/使得程序正常结束5、PL/SQL数据类型:5.1标量数据类型:标量变量是指只能存储单个数值的变量。

第1章PLSQL基础知识

第1章PLSQL基础知识

Oracle数据库PL/SQL开发----PL/SQL基础知识章节目标了解/的基本概念•了解PL/SQL的基本概念•掌握PL/SQL块的基本组成区分/变量和非/变量•区分PL/SQL变量和非PL/SQL变量•掌握如何声明变量•掌握如何对变量进行赋值•掌握%TYPE的使用理解在/SQ中SQ语句的作用•理解在PL/SQL中SQL语句的作用本章主要内容知识点掌握程度难易程度项目介绍介绍背景项目了解为什么使用PL/SQL 什么是PL/SQL 理解PL/SQL的优点了解PL/SQL结构块类型了解理解块结构变量声明语法掌握数据类型:标量类型掌握数据类型:复合类型了解数据类型外部变量数据类型:外部变量了解变量赋值掌握函数及注释注释掌握PL/SQL函数的应用:有效函数掌握PL/SQL函数的应用:无效函数掌握与Oracle的交互PL/SQL中的SELECT语句掌握PL/SQL中的DML语句掌握PL/SQL中的事务处理语句掌握PL/SQL概述什么是PL/SQL发专用的种程序设计•PL/SQL是由Oracle开发,专用于Oracle的一种程序设计语言PL代表Procedural Language•Procedural Language•SQL代表Structured Query Language•PL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语言的特点•PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在/Q代码的程序单元中•PL/SQL(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.PL/SQL的优点•改善了性能PL/SQL以整个语句块发送给服务器,这个过程在单次调用中完成,降低了网络拥挤。

而如果不使用PL/SQL,每条SQL语句都有单独的传输交互,在网络环境下占用大量的服务器时间,同时导致网络拥挤。

服务器时间同时导致网络拥挤•可重用性PL/SQL能运行在任何ORACLE环境中(不论它的操作系统和平台),在其他ORACLE能够运行的操作系统上无需修改代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PLSQL学习(一) 基础知识
很久以前自己整理的PLSQL一些基础知识,翻出来看看都是比较基础的内容,还是放上来好了。

参考的资料是《PL/SQL用户指南与参考》中译版,觉得这是一部很不错的入门书,感谢把这本书翻译出来的网友。

1、乘方的不同应用:
在SQL中乘方只能使用函数Power(a,b)来计算
但在PLSQL中可直接使用a**b表示
2、赋值语句Returning:
insert into t1 values(90,'SERVICE','BEIJING')
Returning rowid,name into row_id,info;
注:只限insert、update、delete一条记录时进行赋值
3、自定义参数——&:
可SQL和PLSQL中均可使用自定义参数,即需要自己输入值的参数
select * from ldcom where comcode=&a andname=&b;
PLSQL:
declare i int := &a; n int := &b;
4、绑定变量的使用:
可使用绑定变量的办法提高SQL效率
SQL> variable x number ;
SQL> exec :x := 8600 ;
SQL> select * from ldcom where comcode= :x ;
注:PLSQL中的declare即隐士绑定,无需再申明
可用Print查看绑定变量 SQL> print x;
也可使用查询SQL> select :x from dual;
实际的简单应用:
variable x number;
declare
v_date date;
begin
for i in1.. 10loop
:x := i;
select sysdate+:x into v_date from dual;
dbms_output.put_line(v_date);
end loop;
end;
/
在execute immediate中的应用:
declare
v_x t1.num%type;
begin
execute immediate'update t1 set num=8888 where id=:a returning num into :b'
using2returning into v_x;
dbms_output.put_line(v_x);
end;
注意returning的返回值在动态SQL中的操作格式
5、%TYPE和%ROWTYPE的区别:
%TYPE针对某一字段类型(数组也是单一的类型)
%ROWTYPE针对某一整表的类型(游标也是整表)
6、计数循环的逆序法:
for i in reverse10.. 100loop
注意reverse的位置不要记错
7、一般的游标使用法:
1、游标的正常使用需要四步
①定义游标
cursor c2(dept_no number default10) is----注意定义dept_no的方法
select name,agentcode from laagent where rownum <= dept_no;
②打开游标
open c3(dept_no =>20); ----可以重新定义dept_no
③提取游标数据
fetch c2 into dept_name,dept_loc;----字符类型、个数相等
fetch c3 into deptrec;----deptrec为rowtype
exit when c3%notfound;
④关闭游标
CLOSE c3;
⑤游标属性
%FOUND--布尔型属性,当最近一次读记录时成功返回,则值为TRUE;
%NOTFOUND--布尔型属性,与%FOUND相反;
%ISOPEN--布尔型属性,当游标已打开时返回TRUE;
%ROWCOUNT--数字型属性,返回已从游标中读取的记录数。

2、使用for自动打开、提取、关闭游标
FOR c1_rec IN c1 LOOP
FOR c1_rec IN(SELECT dname, loc FROM dept) LOOP
3、注:单一的SQL语句都是一个隐式的游标,属性为
SQL%FOUND--布尔型属性,当最近一次读记录时成功返回,则值为TRUE;
SQL%NOTFOUND--布尔型属性,与%FOUND相反;
SQL%ISOPEN--布尔型属性,当游标已打开时返回TRUE;
SQL%ROWCOUNT--数字型属性,返回已从游标中读取的记录数。

例如:DELETEFROM emp WHERE deptno=v_deptno;
IF SQL%NOTFOUND THEN ...
8、For Update锁定数据:
CURSOR emp_cursor is select empno,sal
from emp where deptno=v_deptno for update of sal nowait;
注意:其中的of sal,for update可以精确到某一个或几个字段
在使用了For Update之后可以在delete和update语句中使用current of cursor_name子句
for emp_record in emp_cursor loop
if emp_record.sal < 1500then
update emp set sal=1500where current of emp_cursor;
end if;
end loop;
但需注意:只能针对for update的表进行修改。

9、Package中的子程序可以重载
即函数名相同,参数个数不同
10、PL/SQL的执行顺序
在同一Package中,若要使用自身定义的Function或Procedure,则必须是之前定义过的。

同理,即便使用参数,也必须在前面定义过。

也就是说:一般最终的执行程序,会放在Package的最后,除非将所有部分都申明成Public。

相关文档
最新文档