new第7章plsql语言基础1

合集下载

《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学习(一) 基础知识

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;declarev_date date;beginfor i in1.. 10loop:x := i;select sysdate+:x into v_date from dual;dbms_output.put_line(v_date);end loop;end;/在execute immediate中的应用:declarev_x t1.num%type;beginexecute 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为rowtypeexit when c3%notfound;④关闭游标CLOSE c3;⑤游标属性%FOUND--布尔型属性,当最近一次读记录时成功返回,则值为TRUE;%NOTFOUND--布尔型属性,与%FOUND相反;%ISOPEN--布尔型属性,当游标已打开时返回TRUE;%ROWCOUNT--数字型属性,返回已从游标中读取的记录数。

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基础》课件
2 函数的定义和应用
掌握函数的创建和使用,以便在SQL查询中返回计算结果。
3 区别和联系
比较存储过程和函数的差异,了解它们在不同场景下的应用。
游标和触发器
1 游标的概念和用法
了解如何使用游标在PLSQL中处理查询结果集。
2 触发器的概念和应用
学习如何创建和使用触发器来自动触发数据库操作。
3 难点分析
1 条件判断语句
掌握IF-THEN、IF-THEN-ELSE和CASE语句,用于根据条件执行不同的代码块。
2 循环语句
学习FOR、WHILE和LOOP语句,以便重复执行代码块。
3 例外处理语句
了解如何处理异常情况,确保代码的可靠性和稳定性。
存储过程和函数
1 存储过程的定义和应用
学习如何创建和调用存储过程,以实现具有复杂逻辑的数据库操作。
了解在哪些场景下使用PLSQL可以极大地提升开发效率和数据处理能力。
2 知识点回顾
复习本课程的核心知识点,加深对PLSQL的理解和掌握。
3 后续学习建议
给出一些建议,帮助学员继续深入学习和应用PLSQL。
PLSQL具有高性能、可扩展性和安全性,它可以有效地处理大量数据和复杂的业务逻辑。
变量与数据类型
1 变量的定义
学习如何声明和使用变量,以存储和操作数据。
2 数据类型的分类和应用
了解各种数据类型的特性和用法,包括数字、字符、日期等类型。
3 常量的定义和应用
学习如何定义和使用常量,以存储不可变的值。
控制语句
探讨使用游标和触发器时可能遇到的常见问题和解决方法。
高级技巧
1 包的定义和使用
了解包的概念和结构,学习如何使用包来组织和管理PLSQL代码。

PLSQL语言基础

PLSQL语言基础


PL/SQL开发工具


SQL *PLUS Procedure Builder Oracle Form、Oracle Reports PL/SQL Developer
PL/SQL程序结构
DECLARE --此处用来定义常量、变量、类型和游标等 BEGIN --此处用来编写各种PL/SQL语句、函数和存储过程 EXCEPTION --此处用来编写异常处理代码 END;

示例
DECLARE TYPE t_emp IS RECORD( empno NUMBER(4), ename CHAR(10), sal NUMBER(6,2)); v_emp t_emp; BEGIN SELECT empno,ename,sal INTO v_emp FROM emp WHERE empno=7844; DBMS_OUTPUT.PUT_LINE(v_emp.ename||' '||v_emp.sal); END;

SELECT 列,列,.. INTO variable_list|record_variable FROM table WHERE condition;

注意: SELECT…INTO语句只能查询一个记录的信息,如 果没有查询到任何数据,会产生 NO_DATA_FOUND异常;如果查询到多个记录, 则会产生TOO_MANY_ROWS异常。 INTO句子后的变量用于接收查询的结果,变量的 个数、顺序应该与查询的目标数据相匹配,也可以 是记录类型的变量。
%rowtype变量

定义一个变量,用于存放表中的一行数据,可 以采用下面的定义方法: 变量名 表名%rowtype; 变量名 游标名%rowtype;

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基础

第七章PLSQL基础

2.保留字 2.保留字
Oralce系统确认的单独使用的字符, Oralce系统确认的单独使用的字符,如:BEGIN、END、date等。保 系统确认的单独使用的字符 BEGIN、END、date等 留字只有单独使用时是被保留的, BeginDate不是保留字 留字只有单独使用时是被保留的,如:BeginDate不是保留字
第七章 PL/SQL基础 PL/SQL基础
7.1 Oralce数据库对象 7.2 PL/SQL块 7.3 语法(词法单位) 7.4 变量声明 7.5 PL/SQL类型 7.6 表达式和运算符 7.7 PL/SQL控制结构 7.8 异常 7.9 PL/SQL风格 7.10习题
1
7.1 Oracle数据库对象 Oracle数据库对象
3.标示引用符 3.标示引用符
Number” “A Number 使用了空格 x/y” 使用了‘ “x/y 使用了‘/’ 使用保留字时需要使用引用标示符: 使用保留字时需要使用引用标示符: EXCEPION” SELECT “EXCEPION EXCEPION FROM excetion_table;
10.角色(Role) 10.角色(Role) 角色
是一组被授予用户的权限的集合。一旦授权给角色, 是一组被授予用户的权限的集合。一旦授权给角色,用户可 以通过称为该角色的成员而获得这些权限,而无需另外授权。 以通过称为该角色的成员而获得这些权限,而无需另外授权。
4
7.1 Oracle数据库对象 Oracle数据库对象
由‘界定的一个或者多个字符,无需转换,可以直接赋值给char型 界定的一个或者多个字符,无需转换,可以直接赋值给char型 char 或者varchar2型字段。 varchar2型字段 或者varchar2型字段。 ‘Abcd’ ‘1234 ‘This is the Oralce classes’ Abcd 1234’ This classes 1234 如果要把‘作为字符串的一部分,需要将两个’并排放置: 如果要把‘作为字符串的一部分,需要将两个’并排放置: She’s ‘She s a student She’’s student’ She s a student She

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数据库进行访问。

PLSQL入门(1)

PLSQL入门(1)

Microsoft Excel 工作表
PL/SQL基本结构 PL/SQL基本结构
PL/SQL程序都是以块(BLOCK)为基本单位,整个PL/SQL块分3部 分:声明部分、执行部分和异常处理部分。其中,执行部分是必须的, 其他两个部分可选。无论程序段的代码量有多大,其基本结构就是由 这3部分组成,而且每条语句均由分号隔开。 DECLARE /*声明部分:在此声明PL/SQL用到的变量、类型及游标,以及局部的 存储过程和函数*/ BEGIN /*执行部分:过程及SQL语句,即程序的主要部分*/ EXCEPTION /*执行异常部分:错误处理*/ END;
关系模型
关系型数据库是以关系模型为基础,采用了关系模型来组织数据的数据库。 关系模型简单的说指的就是二维表模型。 关系模型中的常用概念包括: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的 表名。表中的每一行数据用来描述事物或事物一部分的状态,每一列描述事 物的某个特征。 元祖:可以理解为二维表中的一行,在数据库中经常被称为记录。 属性:可以理解为二维表中的一列,在数据库中经常被称为字段。 域:属性的取值范围,也就是数据库中某一列的取值范围。 候选码:关系中能唯一标识元祖的最小的属性集合。 主码:一组可以唯一标识元祖的属性。数据库中常称为主键或主关键字,由 一个或多个列组成。 关系模式:指对关系的描述,其格式为:关系名(属性1、属性2…属性N)。 在数据库中通常称为表结构。
基本句法(续一) PL/SQL 基本句法(续一)
引用字符串 字符串:是由零个或多个字符组成的有限序列 。 字符串在PL/SQL语言中使用时,需要用单引号包含起来(如’字符 串’) select * from items where name = 'apple' select * from items where name = apple 括号 PL/SQL中标准组合运算符是括号。它用来建立数学表达式和复杂比较 中的优先顺序。 例1:SELECT itemID FROM Inventory WHERE warehouseID IN (SELECT warehouseID FROM Warehouse WHERE isActive = 1) 例2:SELECT 1 + 2 * 3 FROM Dual 和 SELECT (1 + 2)* 3 FROM Dual

第7章 PLSQL编程基础

第7章  PLSQL编程基础

8.3 条件语句
8.3.1 IF条件语句
在PL/SQL块中,IF 条件语句的结构如下: IF <条件表达式> THEN <执行语句> …… <执行语句n> [ELSIF <条件表达式> THEN <执行语句> …… <执行语句n> …… ELSE <执行语句>] END IF;
8.3 条件语句
【例8.8】 在PL/SQL语句中,使用IF条件语句判断 成绩的不同等级,如下:
8.2 PL/SQL常量和变量定义
6、记录类型和表类型
(2)表类型 使用记录类型只能保存一行数据,这就限制了 查询语句返回行数。如果需要返回多行数据,就可 以使用表类型,其允许处理多行数据,和表类似。 创建表类型的语法如下: TYPE table_name is table of data_type index by binary_integer
8.1 PL/SQL概述
8.1.3 PL/SQL程序注释
1.单行注释 单行注释由两个连字符(--)开始,其注释范围从 连字符开始,到行的末尾结束。 2.多行注释 单行注释时,如果注释超过一行,就必须在每 一行的开头使用两个连字符。这时就采用多行注释 的方式。多行注释由/*开头,由*/结尾。
8.2 PL/SQL常量和变量定义
8.3 条件语句
【例8.9】在PL/SQL语句中,使用CASE条件语句判断成绩的 不同等级,如下:
SET SERVEROUTPUT ON DECLARE v_grade VARCHAR2(20):='良好'; BEGIN CASE v_grade WHEN '不及格' THEN DBMS_OUTPUT.PUT_LINE ('成绩 < 60'); WHEN '及格' THEN DBMS_OUTPUT.PUT_LINE ('60 <= 成绩 < 70'); WHEN '中等' THEN DBMS_OUTPUT.PUT_LINE ('70 <= 成绩 < 80'); WHEN '良好' THEN DBMS_OUTPUT.PUT_LINE ('80 <= 成绩 < 90'); WHEN '优秀' THEN DBMS_OUTPUT.PUT_LINE ('90 <= 成绩 <= 100'); ELSE DBMS_OUTPUT.PUT_LINE ('输入有误'); END case; END; /8 Nhomakorabea3 条件语句

PLSQL基础语法

PLSQL基础语法

PLSQL基础语法有时候我们需要对数据库中的数据进⾏⼀些稍微复杂的操作,⽽且这些操作都是⼀次性的,⽤完之后就不再⽤了。

⽤存储过程的话就太⿇烦,⽽且浪费,⽤完了还要去删除。

⽽单个SQL⽆法满⾜需求。

这时候⽤⼀下SQL的语句块就可以了。

如果你⽤的是Oracle数据库,那么你就可以⽤PL/SQL(Procedure Language/SQL),即过程化查询语⾔。

这是第三代语⾔。

⽽我们⽤的SQL是结构化查询语⾔,属于第四代语⾔。

PL/SQL能够实现更加复杂的逻辑操作,像我们使⽤Java,C等⾼级语⾔⼀样。

但如果是在MYSQL/SQLSERVER数据库中,那PL/SQL 就⽆法使⽤(PL/SQL是属于Oracle的过程查询语⾔)。

如果你要在MYSQL/SQLSERVER实现复杂的逻辑查询,那你只能通过编写存储过程实现。

下⾯对PL/SQL常⽤的⼀些基础知识进⾏讲解。

在讲解之前,先创建⼀个⽤于测试的表:--创建测试表create table t_plsql_test(id varchar(10),name varchar(100),mDate date);--插⼊测试数据insert into t_plsql_test values(1, 'one', to_date('1992/03/08', 'YYYY/MM/DD'));insert into t_plsql_test values(2, 'one', to_date('1993/03/08', 'YYYY/MM/DD'));insert into t_plsql_test values(3, 'one', to_date('1994/03/08', 'YYYY/MM/DD'));commit;--查看select * from t_plsql_test;⼀、PL/SQL的结构[declare] --变量声明(可以省略) --如:my_var varchar(200);begin --SQL语句[exception] --异常声明(可以省略) end;例如:declarenowDate date:= sysdate;BEGINupdate t_plsql_testset mdate = nowDatewhere id = 3;commit;END;--查看select * from t_plsql_test;⼆、PL/SQL的基本规则1、标识符不区分⼤⼩写,所有的名称在存储时⾃动改成⼤写。

第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 使用手册PL/SQL 是一种过程化编程语言,特别适合与 Oracle 数据库一起使用。

本文将为您提供 PL/SQL 的使用手册,详细介绍 PL/SQL 的特性、语法以及常用技巧,帮助您快速上手并有效地利用 PL/SQL 进行数据库开发。

1. PL/SQL 简介PL/SQL 是 Oracle 数据库中扩展功能的一部分,它结合了 SQL 语句和流程控制语句,允许开发人员在数据库中执行复杂的任务和操作。

PL/SQL 以块的方式组织代码,这些代码块可以嵌套和重用,提高了代码的可维护性和复用性。

2. PL/SQL 基础语法2.1 变量和数据类型在 PL/SQL 中,可以声明各种类型的变量来存储数据。

常见的数据类型包括整型、浮点型、字符型等。

通过变量,可以存储和操作数据,使得代码更加灵活和可读性更强。

2.2 控制流程PL/SQL 提供了丰富的控制流程语句,如条件判断、循环等,用于实现不同的业务逻辑。

通过控制流程语句,可以根据不同的情况执行不同的代码块,实现灵活的程序逻辑。

2.3 异常处理PL/SQL 具有强大的异常处理机制,通过使用 EXCEPTION 关键字来捕获和处理异常。

可以使用 TRY-CATCH 结构捕获异常,并在异常发生时执行相应的操作,保证程序的健壮性和稳定性。

3. PL/SQL 常用技巧3.1 存储过程存储过程是 PL/SQL 的一种重要应用,可以将一系列的 SQL 语句和逻辑封装在一个过程中,提供数据库操作的接口。

存储过程可以提高性能,减少网络开销,并增加代码的重用性。

3.2 游标游标是 PL/SQL 用于遍历结果集的一种对象。

通过游标,可以从查询结果中提取出数据,并逐条进行处理。

这在需要对查询结果进行逐行处理时非常有用。

3.3 包和触发器PL/SQL 支持包和触发器的概念,这些是组织和管理代码的有力工具。

通过将相关的过程和函数组织到包中,可以提高代码的可维护性和可读性。

第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能够运行的操作系统上无需修改代码。

第07章 SQL与PLSQL基础

第07章  SQL与PLSQL基础

第七章SQL与PL/SQL基础7.1 SQL命令概述SQL(Structured Query Language)是结构化查询语言的缩写,它是目前使用最广泛的数据库语言,SQL是由IBM发展起来的,后来被许多数据库软件公司接受的一个标准。

SQL是一种灵活、有效的语言,它的一些功能特性专门用来处理和检验关系型数据。

SQL是一种第四代语言,这就意味着该语言会描述应该做些什么,但是不会描述如何去做。

PL/SQL是ANSI标准SQL的Oracle版本的过程化语言的扩展。

PL/SQL像第三代(3GL)过程化语言一样,要求一步步指导来确定下一步做什么。

类似其他的工业标准语言,PL/SQL 提供变量声明、赋值、条件测试与分支以及迭代的语言元素。

但真正实现对数据库的操作还是通过SQL命令来实现的。

所以在介绍PL/SQL之前,我们必须要知道基本的SQL命令。

Oracle中SQL语言命令共分为六个类别,如下表所示:表7-1 SQL基本命令分类类别 SQL语句数据定义语言(DDL) DROP、CREA TE、ALTER、GRANT、REVOKE数据操纵语言(DML) SELECT、INSERT、UPDA TE、DELETE、SET TRANSACTION、EXPLAINPLAN事务控制 COMMIT、ROLLBACK、SA VEPOINTSESSION、SET ROLE会话控制 ALTER系统控制ALTER SYSTEM嵌入式SQL CONNECT、DECLARE CURSOR、ALLOCA TE这些命令语句的主要含义如下:¾数据定义语言(Data definition language,简称DDL)语句用来创建、删除或者更改一个数据模式对象的结构。

更改数据模式对象的特权的命令也是DDL。

¾数据操纵语言(Data manipulation language,简称DML)语句用来改变表中的数据或者查询数据库表中的数据,但是不会改变表或其他对象的结构。

第7章 PLSQL编程基础new_p1

第7章 PLSQL编程基础new_p1
▪ 必须以字母开头,长度不能超过30个字符。 ▪ 标识符中不能包含减号“-”和空格。 ▪ Oracle标识符不区分大小写。 ▪ 标识符不能是SQL保留字。
7.2.2 PL/SQL中的数据类型
❖1.标量数据类型
▪ 数值类型:存储的数据为数字,用此数据类型 存储的数据可用于计算。
• 常用的NUMBER(p,s)用来存储正负整数、分数和
BEGIN DECLARE
内层程序块
var2 VARCHAR2(20):='内层程序块';
BEGIN
dbms_output.put_line(var2); END; dbms_output.put_line(var1); END; /
注意内外层 程序块中变 量访问的作 用域。
7.2 变量与常量
❖标识符定义必须要满足以下规则:
▪ 其中identifier表示变量名或常量名
例7.5 通过PL/SQL程序块定义下列的变量和常量
DECLARE
v_ename VARCHAR2(10);
v_sal NUMBER(6,2);
c_tax_rate CONSTANT NUMBER(3,2) :=5.5;
v_hiredate DATE;
❖3.属性类型
▪ 属性类型用于引用变量或数据库列的数据类型 ,以及引用表中一行的记录类型。
▪ 包括:
• %TYPE 用于引用变量或数据库列的数据类型 • %ROWTYPE 用于引用表中一行的记录类型
7.2.3 声明变量与常量
❖在PL/SQL程序块中定义变量和常量的语法 如下:
identifier [CONSTANT] DATATYPE [NOT NULL] [ [:= expr] |[ DEFAULT expr] ]

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

1.声明部分
PL/SQL中常用简单数据类型:
• • • • • • • • • BLOB。二进制大对象,可以用来保存图像和文档等二
进制数据。
BOOLEAN。布尔数据类型,支持TRUE/FALSE值。 CHAR。固定长度字符串。 CLOB。字符大对象,可用来保存多达4GB的字符数据。 DATE。存储全部日期的固定长度字符串。 LONG。可变长度字符串。 NUMBER。可变长度数值。 RAW。二进制数据的可变长度字符串。 VARCHAR2。可变长度字符串。 建议参考所访问的表的结构来定义数据类型
1.声明部分
【例】定义常量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 varDAY INTEGER := 3; Result VARCHAR2(20); BEGIN case WHEN varDAY=1 THEN Result:='星期一'; WHEN varDAY=2 THEN Result:='星期二'; WHEN varDAY=3 THEN Result:='星期三'; WHEN varDAY=4 THEN Result:='星期四'; WHEN varDAY=5 THEN Result:='星期五'; WHEN varDAY=6 THEN Result:='星期六'; WHEN varDAY=7 THEN Result:=‘星期日'; ELSE Result:='数据越界'; END case; dbms_output.put_line(Result); END; /
2.注释
单行
• --
多行或单行
• /* */
3.执行部分
1)赋值语句
【例】在程序的运行过程中,对变量进行赋值操作: SET ServerOutput ON; DECLARE 赋值 := Database VARCHAR2(50); BEGIN Database := ' Oracle 10g '; dbms_output.put_line(‘ Database 的值为' || Database); END; 拼接两个字符或其他类型变量 || /
1.声明部分
Oracle支持的数据类型:
• Integer • Y interger:=123;
String
• Y string(10):=‘123’ • 必须指定长度
1.声明部分
复合数据类型(%type 和 %rowtype)
• %type语法: 变量名 另一变量%type; 变量名 表.列名%type; • 这中类型的好处是:原来变量和列的类型被修 改了,不需要修改新的变量的类型。 • v_empno emp.empno%type ; • 代表v_empno和emp表中字段empno类型和长度 完全一样。
7.1 7.2 概述 PL/SQL语言的结构
1、声明 2、注释 3、执行 4、异常处理
7.1 概述
什么是PL/SQL?
是过程化SQL语言(Procedural Language/SQL)简 称。 PL/SQL是Oracle数据库对SQL语句的扩展,在普通 SQL语句的使用上增加了编程语言的特点。
1.声明部分
在pl/sql中常量和变量使用之前必须声明。 语法:
常量名 constant 数据类型 := 值;
变量名 数据类型 [约束] [default 默认值]; 变量名 数据类型 [约束] [:=初始值];
1.声明部分
常量名和变量名的命名规则: • 标识符必须以字符开头。 • 标识符中可以包含数字(0~9)、下划 线(_)、“$”和“#”。 • 标识符最大长度为30。 • 标识符不区分大小写。 • 不能使用PL/SQL保留字使用标识符名, 例如不能声明变量名为DECLARE。 (v$reserved_words----1129 )
PL/SQL就是把数据操作和查询语句组织在PL/SQL 代码的过程性单元中,通过逻辑判断、循环等操作 实现复杂的功能或者计算的程序语言。
PL/SQL的特性
使用PL/SQL可以编写具有很多高级功能的程序,虽 然通过多个SQL语句可能也能实现同样的功能,但 是相比而言,PL/SQL具有更为明显的一些优点: ⒈能够使一组SQL语句的功能更具模块化程序特点; ⒉采用了过程性语言控制程序的结构; ⒊可以对程序中的错误进行自动处理,使程序能够 在遇到错误的时候不会被中断; ⒋具有较好的可移植性,可以移植到另一个Oracle 数据库中; ⒌集成在数据库中,调用更快; ⒍减少了网络的交互,有助于提高程序性能。
1.声明部分
• %rowtype语法: 变量名 表或视图或游标%rowtype; • 即一个变量的类型参考基表、视图中记录的类型、 或游标的结构类型。 • myrec emp%rowtype ; • 代表myrec是一个记录,记录中包含变量的个数 和emp表中的字段个数相同,变量类型与表中各 字段类型相对应。Myrec.empno
3.执行部分
4) 循环语句 (a)循环语句LOOP…EXIT…END
LOOP <程序块1> IF <条件表达式> THEN EXIT; END IF; <程序块2> END LOOP;
3.执行部分
【例】LOOP…EXIT…END语句的示例程序:
SET ServerOutput ON; DECLARE v_Num INTEGER := 1; v_Sum INTEGER := 0; BEGIN LOOP v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); IF v_Num = 3 THEN EXIT; END IF; dbms_output.put_line(' + '); v_Num := v_Num + 1; END LOOP; dbms_output.put_line(' = '); dbms_output.put_line(v_Sum); 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; /
PL/SQL块的种类
匿名块
[DECLARE]
过程
PROCEDURE name IS BEGIN --代码 [EXCEPTION]
函数
FUNCTION name RETURN datatype IS BEGIN --代码 RETURN value; [EXCEPTION]
BEGIN --代码 [EXCEPTION]
程序的运行结果为:
10.2.0.1.0
1.声明部分
【例】声明一个变量Database保存数据库信息:
SET ServerOutput ON; DECLARE Database VARCHAR2(50) := ' Oracle 10g '; BEGIN dbms_output.put_line(Database); END; 程序的运行结果为: Oracle 10g
DECLARE V_counter binary_integer:=1; (变量必须初始化) Begin Loop Insert into temp_table values(v_counter,’loop index’); V_counter:=v_counter+1; If v_counter>50 then Exit; End if; End loop; End; /
第7章
PL/SQL语言基础
本章要点
理解PL/SQL程序块的结构 如何在PL/SQL中声明变量和常量 理解SQL数据类型与PL/SQL数据类型之间的差别 怎样使用游标技术在用户代码中将SQL与PL/SQL集 成 在用户代码中如何使用循环结构和条件语句 怎样捕获和控制用户代码中的潜在错误
教学过程
3.执行部分
3)分支语句CASE (9i之后开始支持) (a) CASE <变量> WHEN <表达式1> THEN 语句序列1; WHEN <表达式2> THEN 语句序列2; …… WHEN <表达式n> THEN 语句序列n; ELSE 语句序列n + 1; END;
(b) CASE WHEN 搜索条件1 THEN 语句序列1; WHEN 搜索条件2 THEN 语句序列2; ... WHEN 搜索条件N THEN 语句序列N; [ELSE 语句序列N+1;] END CASE WHEN子句包含产生布尔值的搜索条件。
3.执行部分
【例】使用CASE语句根据给定的整数输出对应的星期值:
相关文档
最新文档