第13讲 PLSQL基础(1)[27页]

合集下载

PL_SQL基础

PL_SQL基础

ORACLE 10g
PLSQL基础 2.根据表的字段定义变量
WEPULL ORACLE 10g
变量的声明还可以根据数据库表的字段进行定义或根据已经定义 的变量进行定义。方法是在表的字段名或已经定义的变量名后加 %TYPE,将其当作数据类型。定义字段变量的方法如下: 变量名 表名.字段名%TYPE; 【训练2】 根据表的字段定义变量。
ORACLE 10g
PLSQL基础 【训练1】 变量的定义和初始化。 输入和运行以下程序: SET SERVEROUTPUT ON
WEPULL ORACLE 10g
DECLARE
v_job
--声明部分标识
VARCHAR2(9);
v_count BINARY_INTEGER DEFAULT 0;
v_total_sal
4. 不能使用Oracle的保留字作为变量名。
5. 变量名不要和在程序中引用的字段名相重,如果相重,变量 名会当作列名来使用。
ORACLE 10g
PLSQL基础
WEPULL ORACLE 10g
变量的作用范围是在定义此变量的程序范围内,如果程序中
包含子块,则变量在子块中也有效。但在子块中定义的变量,仅 在定义变量的子块中有效,在主程序中无效。 变量定义的方法是: 变 量 名 [CONSTANT] 类 型 标 识 符 [NOT NULL][:= 值 |DEFAULT 值];
ORACLE 10g
PLSQL基础 2 块结构和基本语法要求
WEPULL ORACLE 10g
PL/SQL程序的基本单元是块(BLOCK),块就是实现一定功能的 逻辑模块。一个PL/SQL程序由一个或多个块组成。块有固定的结构,
也可以嵌套。一个块可以包括三个部分,每个部分由一个关键字标识。

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

11
命名规则
选择变量名称的规则
• • • • 变量必须以字母(A~Z)开头 其后跟可选的一个或多个字母、数字(0~9)或特殊字符$、# 或_ 变量长度不超过30个字符 变量名中不能有空格
• 1、标识符命名规则
– 当定义变量时,建议使用v_作为前缀 – 当定义常量时,建议使用c_作为前缀 – 当定义游标时,建议使用_cursor作为后缀 – 当定义异常时,建议使用e_作为前缀 – 当定义PL/SQL表类型时,建议使用_table_type作为后缀 – 当定义表变量时,建议使用_table作为后缀 – 当定义记录类型时,建议使用_record_type作为后缀 – 当定义记录变量时,建议使用_record作为后缀
4
PL/SQL 的运行机制
PL/SQL 引擎驻留在 Oracle 服务器中 该引擎接受 PL/SQL 块并对其进行编译执行
Oracle 服务器 将PL/SQL 块发送给 Oracle 服务器 将结果发送给用户 PL/SQL引擎 过程语句执行器 执行过程语句
用户
引擎将 SQL 语句发送给 SQL 语句执行器
16
使用%type和%rowtype
• 可以使用%type和%rowtype来声明变量,而不必指定特定的数据类型。这两 个属性提供了这种方式:在声明变量时,不指定变量的数据类型,而由表/视 图列或PL/SQL程序包变量来定义变量的数据类型。 • %type和%rowtype可以用于不同的情况。
– 当用户声明单独的变量而不是记录时可以使用%type。 – 当用户声明表示表、视图或游标的完整行的记录变量时可以使用%rowtype。
8
变量和常量
• 用户使用的所有变量和常量都必须在程序块中的声明部分定义。对于每一个 变量,用户都必须规定名称和数据类型,以便在可执行部分为其赋值。 • 在何处为变量赋值是可以选择。既可以选择在可执行部分中为变量赋值,也 可以选择在声明变量时同时为其赋值。如图9-4所示是这两种赋值方式。其中, 第一个示例在可执行部分中为变量赋值,而在第二个示例中,声明变量时同 时赋值。但是,这两种赋值的结果完全一样。第二个示例使用了关键字null。 null关键字表示什么都不做。

PLSQL基础知识

PLSQL基础知识
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
```
是因为我们在声明变量的时候,数据类型的长度过于窄小导致的。我们可以采用%TYPE的形式来声明变量(并修改上述例子)。
```
declare
v_name varchar2(15) ;
- 简单条件判断
用于执行单一条件判断,如果满足特定条件,则会执行相应操作;如果不满足条件,则退出条件分支语句。简单条件判断是使用if-then语句来完成的。示例如下:
```
declare
v_sal number(6,2);
begin
select sal into v_sal from emp where lower(ename) = lower('&&name') ;
if v_job = 'PRESIDENT' then
update myemp set sal = v_salary + 1000 where empno = &no ;
用于执行最复杂的条件分支操作,当使用多重条件分支时,如果满足第一个条件,则执行第一种操作,如果不满足第一个条件,则检查是否满足第二个条件,如果满足第二个条件,则执行第二种操作;如果不满足第二个条件,则检查是否满足第三个条件,以此类推。多重条件分时是使用if...then..elsif语句来完成的。示例如下:
exception
when no_data_found then
dbms_output.put_line( '没有找到数据' );
end;
```
## 编写控制语句
控制语句主要有分支、循环、顺序控制三种。

PLSQL讲义

PLSQL讲义

1 / 695122/天(7天);152/天(4天)/u01/app/oracle/product/11.2.0/db_1/rdbms/admin/utlsampl.sqlLes01 基本SQL语句2 / 6951-1 基本SQL语句3 / 6951-2 目标4 / 6951-3 SELECT语句的功能5 / 6951-4 基本SELECT语句statement, clause 在简单的SELECT语句中必须包含2个部分,即SELECT子句和FROM子句。

解释,SELECT, DISTINCT, *, column, alias, FROM,关键字、子句、语句6 / 6951-5 SELECT语句的书写在SQL*Plus中,在SQL提示符下输入SQL语句,从第2行起有行号7 / 6951-6 选出所有的列让学生先熟悉一下表结构。

用的是scott方案下的表。

8 / 695------------------------------DEPTEMPBONUSSALGRADE# 查看emp表的字段和相应的数据类型scott@TESTDB11>desc empName Null? Type--------------------------------------------EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)# 查看dept表结构scott@TESTDB11>desc deptName Null? Type---------------------------------------------DEPTNO NOT NULL NUMBER(2)DNAME VARCHAR2(14)LOC VARCHAR2(13)# 查看salgrade表结构scott@TESTDB11>desc salgradeName Null? Type9 / 69510 / 69511 / 6951-7 选出特定的列也可以从伪列中做选择。

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基本操作手册

第1章用PLSQL连接Oracle数据库PLSQL只能用来连接Oracle数据库(不象PB还可以连接JDBC、ODBC),所以必须首先安装并配置Oracle客户端。

§1.1初次登录PLSQL:运行PLSQL通过如下界面连接Oracle数据库:Database的下拉列表中自动列出了Oracle客户端配置的所有服务名。

选择要连接的Oracle服务名,并输入用户名/密码。

点击ok进行连接。

§1.2登录信息保存功能设置:如果设置了登录信息保存功能,可以通过以下方式连接数据库,而不必每次输入用户名/密码。

点击,在下拉列表中选择之前保存的数据库登录信息,直接进行连接。

登录信息保存功能设置:进入PLSQL后,在菜单区点击右键,出现如下PLSQL配置界面。

将Store with password 选中即可,这样第一次通过用户名/密码登录某数据库后,下次就不用再输入用户名/密码了。

§1.3进入PLSQL后切换数据库连接:点击,选择要连接的数据库即可完成切换。

第2章PLSQL中编写SQL语句并执行点击,并选择SQL Window进入SQL语句编写界面,如下:点击,执行SQL语句,页面右下方出现结果列表。

如下图:(执行快捷键为:F8)点击,使结果全部呈现。

第3章PLSQL中查看数据库表结构§3.1查看表结构:在如下界面,按住Ctrl键并将鼠标移动到一个表名,此时表名变了颜色:点击表名,便可显示表结构,如下图:§3.2表结构窗口和SQL编写窗口切换:在Tools菜单中,选中Window List,此时会新打开一个窗口,将其放置到左下脚,窗口中罗列了右下方操作区打开的所有窗口,通过选择可以进行窗口切换。

也可通过以下方式进行切换:在Window菜单最下方罗列了操作区打开的所有窗口,通过选择可以进行窗口切换。

第4章PLSQL中SQL语句的注释选取想要注释的语句,点击进行注释,如下:结果如下:取消注释点击。

PLSQL编程基础ppt课件

PLSQL编程基础ppt课件
5
7.2 变量的声明与赋值
变量声明并使用变量: 变量名称可以有字母、数字、_、$、#等组成。 所有变量名称要求以字母开头,不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写
6
7.2 变量的声明与赋值
声明变量语法: 变量名称 [CONSTANT] 类型 [not NULL] [:=value] 使用%TYPE声明变量类型: 在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某 一列的类型一样,则可以采用 “变量定义”表名称.表名称%TYPE的格式
DBMS_OUTPUT.put_line('雇员:' || v_eno || '的收入为高工资。') ;
WHEN v_salary >= 2000 AND v_salary <3000 THEN
CASE语句
Case语句是一种多条件的判断语句,其功能与IF……elseif……else类似
Case语法:
Case[变量] when [值|表达式] THEN
执行语句块; when [值|表达式] THEN
执行语句块; Else
条件都不满足时执行语块; End case
22
7.4.1 分支结构
范例:使用CASE进行多条件判断
END IF;
19
7.4.1 分支结构
范例:用户输入一个雇员编号,根据它所在的部门给 上涨工资,规则:
·10部门上涨10%,20上涨20%,30上涨30%; ·但是要求最高不能超过5000,超过5000就停留在 5000。
20
7.4.1 分支结构
DECLARE
v_empSal
emp.sal%TYPE ;

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课件.ppt

PLSQL课件.ppt

1 PL/SQL简介
❖ SQL是属于第四代语言(4GL),其执行特点是非 过程化(描述性语言)。
❖ 然而,对于有些复杂的业务流程又要求相应的程序 来描述,那么4GL就有些无能为力了。PL/SQL的 出现正是为了解决这一问题,PL/SQL是一种过程 化语言,属于第三代语言,它与C,C++,Java等语言 一样关注于处理细节,因此可以用来实现比较复杂 的业务逻辑。
(4)可以使用Oracle数据工具管理存储在服务器中的PL/SQL 程序的安全性。可以授权或撤销数据库其他用户访问 PL/SQL程序的能力。
(5)PL/SQL代码可以使用任何ASCII文本编辑器编写,所以 对任何Oracle能够运行的操作系统都是非常便利的。
开发运行环境
❖ PL/SQL 不需要显式的安装或许可。它是 Oracle数据库的隐式部分。PL/SQL 编译器 和解释器也嵌入到多个 Oracle 工具中。
❖ Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]
❖ v_id number; 声明变量 ❖ v_id CONSTANT NUMBER:=0 常量声明并赋值 ❖ birthdate DATE; ❖ emp_count SMALLINT DEFAULT 0; ❖ acct_id VARCHAR2(5) NOT NULL := 'AP001'; ❖ acct_id VARCHAR2(5) NOT NULL; -- 不合法,
变量赋值
❖ v_id:=5; --在程序执行部分赋值 ❖ Select a.deptno into v_dept … ❖ Fetch c1 into vname

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

教学文档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 作业。

plsql基础

plsql基础



VARRAY:数组是具有相同数据类型的一组成 员的集合.每个成员都有一个唯一的下标,它 取决于成员在数组中的位置. 定义VARRAY数据类型的语法如下:
Type varray_name is varray(size) of element_typeRE –optional
Declaration-list variables and cursors
BEGIN –required
Execution-Processes instructions
EXCEPTION –optional Exception-Handles errors END; –required /

从ORACLE6开始,ORACLE公司将变量、控 制结构,过程,函数等结构化程序设计的要 素与SQL语言结合,在标准SQL语言的基础 上开发了自己的PL/SQL语言。



允许嵌入SQL语句 允许定义变量和常量 允许使用条件语句和循环语句 允许使用异常来处理各种错误 允许在各种数据库操作情况(触发事件)下 隐含地执行一个PL/SQL程序
PL/SQL 代码块种类

命名块-编译错误 命名块的一个最大优势是:命名块中语 法、依赖关系和权限等错误都是在过程 或函数的编译过程中被捕获,而不是在 运行时被捕获。 创建过程或函数的时候,Oracle会首先编 译代码,并检查其依赖性和语法是否正 确。如果存在问题,Oracle就会返回一个 错误信息,并将该命名块标识为无效

需要注意的是:

常(变)量以一个字母开头,后面跟字母,数字, 货币符号,下划线,#等符号组成.不允许使用 空格,长度不能超过30个字符

如果有CONSTANT,则表明声明的是常量

PLSQL教程学习教程

PLSQL教程学习教程
例: DECLARE Ename varchar2(20) :=’KING’; BEGIN DELETE FROM emp WHERE ename=ename; END;
第7页/共36页
PL/SQL中的标识符
下面是建议使用的变量命名方法
标识符 程序变量 程序常量 游标变量 异常标识
表类型 表
记录类型 参数
trim
N/A
从集合的最后删除一个元素
可变数组
Delete(n)
N/A
删除元素下标为n的元素

第22页/共36页
表和数组属性
例: DECLARE type strings_table is table of varchar2(10) index by binary_integer; strings strings_table; int number;
-- Declare a varray with four element
v_list strings := strings('scott','peter','smith','tom');
int number;
BEGIN
int := 1;
dbms_output.put_line(v_list(int));
PL/SQL中的变量类型
类型 CHAR(n) VARCHAR2(n) BINARY_INTEGER NUMBER(p,s)
LONG DATE BOOLEAN ROWID
说明 定长字符串,长度可选,缺省1。最大可达2000字节 可变字符串,长度不能缺省,最大可达4000字节 带符号整数,为整数计算优化性能 数值,p代表刻度,s代表精度 变长字符串 日期 布尔 存放数据库行号

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基础培训
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BEGIN ………
END;
常量和变量
【例1】使用PL/SQL程序块,输出显示scott.emp表中的 部分数据。
SET SERVEROUTPUT ON Declare
emp_number CONSTANT NUMBER(4) :=7900; emp_name VARCHAR2(10); emp_job VARCHAR2(9); emp_sal NUMBER(7,2); BEGIN …… END
PL/SQL程序块的基本结构
❖ 它主要包括DECLARE部分、BEGIN … END部分和 EXCEPTION部分,具体代码结构如下:
[ DECLARE declaration_statements ; ] BEGIN
executable_statements ; [ EXCEPTION exception_handling_statements ; ] END ; /
用P于L用/处S于Q理声LP块明L需/变SPQ要L量/LS使块Q用L运程正行序斜过块杠程的(/中)结主可尾体能,部出才分现能的被任执何行可执行错误 executable_statements:PL/SQL块中的可执行语句
PL/SQL程序块的基本结构
常量和变量
❖ 定义常量与变量时,名称必须符合Oracle标识符 的规定,如下: 名称长度不能超过30个字符。 名称必须以字母开头。 名称中不能包含减号(-)和空格。 不能是SQL保留字。 变量中可以有[$] [#]和[_]
PL/SQL程序注释
❖ PL/SQL程序块的内容一般会较长而且较为复杂,所以在 PL/SQL块中添加适当的注释会提高代码的可阅读性。
❖ PL/SQL中可以使用如下两种注释符号添加注释文本。 双减号(--):使用双减号(--)可以添加单行注释,其注释 范围从双减号开始,到该行的末尾。 正斜杠星号字符对(/* … */):使用正斜杠星号字符对(/* … */)可以添加一行或多行注释,这种形式的注释可以 位于可执行代码中间,系统只将字符对之间的文本内 容作为注释。
PL/SQL程序注释
双减号(--):使用双减号(--)可以添加单行注释,其注释 范围从双减号开始,到该行的末尾。
PL/SQL程序注释
正斜杠星号字符对(/* … */):使用正斜杠星号字符对(/* … */)可以添加一行或多行注释,这种形式的注释可以位于可 执行代码中间,系统只将字符对之间的文本内容作为注释。
常量和变量
❖ 1.PL/SQL数据类型 (1)与SQL的数据类型 (2)表5-2所示的数据类型
CHAR与VARCHAR2类型 x VARCHAR2(10 CHAR) := ‘abc ’; y CHAR(10 CHAR) := ‘abc ’
结果: x : ‘abc ’ 结果: y : ‘abc ’
常量和变量
定义变量的语法形式如下:
variable_name data_type [ [ not null ] { := | DEFAULT } value ] ;
【例】 emo number(4); 【例】 emo number(4) :=100 ; 【例】 emo number(4) DEFAULT 100;
(2)解读以下SQL语句: select empno from scott.emp where sal>all (select avg(sal) from scott.emp group by deptno)
内容回顾
(3)连接查询,列出英文单词: 内连接、外连接、交叉连接、自然连接
(4)说明等值连接与内连接、等值连接与自然连接的 用法上的区别
(5)写出SQL语句: 使用内连接语法:emp和dept
第13讲 PL/SQL 基础(1)
Kegully
PL/SQL基础
❖ 本章要点:
了解PL/SQL程序块的结构。 熟悉常量与变量的用法。 掌握%TYPE的使用。 掌握%ROWTYPE以及记录类型与表类型的使用。 熟练掌握条件选择语句的使用。 熟练掌握循环语句的使用。 掌握游标的使用。 掌握异
n1 number(10,2); v1 varchar2(20) not null DEFAULT‘天津’; v2 varchar2(20):=‘天津’; v3 CONSTANT varchar2(20):=‘天津’; v4 CONSTANT varchar2(20) DEFAULT ‘天津’;
❖ 2.常量
定义常量的语法形式如下:
constant_name constant data_type { := | DEFAULT } value ; 注: :=为赋值操作符 【例】 emo constant number(4):=100; 【例】或者:emo constant number(4) DEFAULT 100; ❖ 3.变量
本次主要内容
❖ 如何写PL/SQL程序块 ❖ 如何定义常量和变量 ❖ 了解%TYPE类型 ❖ 如何获取用户输入
PL/SQL程序块
❖ 在实际情况中,信息的存储和查询只是数据库系统应用的 一部分,即使最简单的数据处理程序也不可能只使用SQL 语句来完成。
❖ SQL不存在变量,只有表和列,不能将某个SQL语句的执行 结果传递给另一个语句,所以Oracle数据库提供了自己的 编程语言PL/SQL。
❖ 例,由用户输入一个雇员编号,之后根据输入的内容查询 雇员的姓名。
什么是PL/SQL
❖PL/SQL: Procedure Language & Structured Query Language
❖ PL/SQL是ORACLE的过程化语言,是对SQL语言存储 过程语言的扩展;
❖ PL/SQL可以执行SQL语句:DML,DDL?
《 Oracle数据库 应用与维护》
知识回顾
➢ 2 子查询: ➢ 多行操作符(ANY、ALL)
➢ 3 高级查询(连接类型)
内容回顾
(1)解读以下SQL语句: select empno from scott.emp where sal>any (select avg(sal) from scott.emp group by deptno)
相关文档
最新文档