文章来源:http://www.itnose.net/detail/6030407.html
更多文章:http://www.itnose.net/type/97.html
PL/SQL简介
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对
SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在
PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言 -- 百度百科。
PL/SQL是Oracle系统的核心语言,现在Oracle的许多部件都是由PL/SQL写成。可以使用的SQL语句有:
INSERT ,UPDATE ,DELETE ,SELECT ...INTO ... ,COMMIT , ROLLBACK ,SAVEPOINT 。
块结构
构成PL/SQL 程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的。由三部分组成,即声明部分,
执行部分,异常处理部分。
具体结构如下:
DECLARE
-- 声明部分,声明函数用到的,常量,变量,类型,游标,异常处理的名称等。
BEGIN
-- 执行部分,程序的执行程序
EXCEPTION
--异常部分,对出现的异常进行处理
END ;
PL/SQL块可以分为三类:
1. 无名块:动态构造,只能执行一次。
2.子程序:在数据库中建立好之后,可以再其他的程序中调用他们。
3.触发器:当数据库发生操作时,会触发一些时间,自动的执行某些程序。
标示符1.字符长度不能超过30.
2.必须用字母开头。
3.由字母A-Z ,a-z ,0-9 ,下划线(_) , 美元符号($),井号(#)组成。
4.不能使用sql保留字和关键字。
注释
单行注释:放置在一行上的注释文本,使用符号“--” 开头,一直到该行的末尾都被注释掉。
多行注释:以符号“/*” 开始 ,以符号“*/” 结束,在这两个符号中间的语句,都被注释掉。
例:编程语言的学习,都是从helloworld开始,下面开始书写第一个pl/sql程序
SQL> set serveroutput on ;
BEGIN
dbms_output.put_line('hello world ');
END ;
hello world
PL/SQL procedure successfully completed
观察发现省略了 declare 和exception这两个部分,这是可以的,当没有变量声明的时候可省略declare
部分,没有异常捕获也可以省略exception部分。dbms_output.put_line()的作用和JAVA中的
system.out.println()类似,需要说明的是在执行pl/sql语句之前压先运行set serveroutput on ;
语句,负责是看不到执行结果的。
例:使用select...into ...查询emp表中员工号为7934的工资,姓名
declare
v_sal number(20);
v_ename varchar2(20);
BEGIN
select sal , ename into v_sal , v_ename from emp where empno = 7934 ;
dbms_output.put_line(v_ename || ',' || v_sal);
END ;
MILLER,1300
上面定义了两个变量,v_sal 和 v_ename,分别定义了变量的类型。定义变量类型还有一种方式,就是使
用“%type”,即:v_sal emp.sal%type ; v_ename emp.ename%type ; 语句的意思是,与表emp中列sal的数据类
型相同。借助已经定义的某个数据变量或者是数据库表中列的数据类型,来定义变量的类型。
变量类型
char:定长字符串。
varchar2:可变字符串。
number:可以存储浮点值或整数值。
date : 日期型。
boolean:布尔型。
记录类型
记录类型是把逻辑相关的数据作为一个单元存储起来。作用是存储互补相同但逻辑相关的信息。有点类似JAVA
中类的概念。
declare
type emp_record is record(
v_sal emp.sal%type ,
v_ename emp.ename%type
);
e_r emp_record ; --声明一个记录类型的变量
BEGIN
select sal , ename into e_r from emp where empno = 7934 ;
dbms_output.put_line(e_r.v_sal || ',' || e_r.v_ename);
END ;
记录类型中变量的使用使用"."调用。如:上面中要使用v_sal变量,e_r.v_sal 。
例:定义一个与emp表中所有的列都相同的记录类型
declare
emp_record emp%rowtype;
BEGIN
select * into emp_record from emp where empno = 7934 ;
dbms_output.put_line('工资'||emp_record.sal || ',' ||'姓名'|| emp_record.ename);
END ;
工资1300,姓名MILLER
PL/SQL procedure successfully completed
记录类型中的变量要和表中所有的列相对应,虽然一行行的定义也是可以的,但是还是比较麻烦的,可以使
用%rowtype 实现上面的要求,但是如果调用相应列的值得时候,则需要使用表表中真实的列名。
运算符特别说明一下 := 的作用是赋值。 v_sal int := 2000 ; 定义v_sal变量并赋值。
流程控制
条件语句
① if 布尔表达式 then
pl/sql 和sql语句;
end if ;
② if 布尔表达式 then
pl/sql 和sql语句;
else
其它语句;
end if ;
③ if 布尔表达式 then
pl/sql 和sql语句;
elsif布尔表达式 then
其它语句;
elsif 布尔表达式 then
其它语句;
else其它语句;
end if ;
case表达式case 表达式
when 值1 then 语句1; when 值2 then 语句2 ; ... elsestatment_else ;
end case ;
循环结构循环结构有3种形式,分别为LOOP循坏,WHILE循环和FOR循坏。
LOOP循坏
LOOP
执行语句;
EXIT WHEN 条件语句 ;
END LOOP ;
使用LOOP循坏至少要执行一次循环语句。
例:使用LOOP循坏,求出1-10 的值。
declare
v_i int := 1 ;
v_sum int := 0 ;
BEGIN
Loop
v_sum := v_sum + v_i ;
exit when v_i = 10 ;
v_i := v_i + 1 ;
end loop ;
dbms_output.put_line(v_sum);
END ;
先判断循坏的条件,只有满足循环条件的才能进入循坏体进行循坏操作。
while 布尔表达式 loop
执行的语句(循坏体);
end loop ;
使用while循环时,要执行的语句可能一次也不执行,这是与Loop循环的区别。
例:使用while循坏,求1-10相加的和。
declare
v_i int := 1 ;
v_sum int := 0 ;
BEGIN
while v_i <= 10 loop
v_sum := v_sum + v_i ;
v_i := v_i + 1 ;
end loop ;
dbms_output.put_line(v_sum);
END ;
for 循环变量 in[reverse] 下限...上限 loop
要执行的语句(循坏体);
end loop;
每循环一次,循环变量自动加1 ,使用reverse关键字,循环变量自动减1 ,
例:使用for-in-loop循环,求1-10的阶乘。declare
v_i int := 1 ;
v_sum int := 1 ;
BEGIN
for v_i in 1..10 loop
v_sum := v_sum*v_i ;
end loop ;
dbms_output.put_line(v_sum);
END ;
执行过程为,首先v_i判断是否在1..10的范围内,如果在执行循环体,end loop ,之后v_i自增1,在进行范围判
断,执行循环体,知道v_i不在范围内,循环终止。
GOTO语句
goto语句表示无条件跳转到指定的标号。goto lebel_name ;<<label>> .../*标号要使用<<>> 括起来*/
declare
v_i int := 1 ;
v_sum int := 1 ;
BEGIN
for v_i in 1..10 loop
v_sum := v_sum*v_i ;
if v_i = 8 then
goto at1 ;
end if ;
end loop ;
<<at1>>
dbms_output.put_line('at');
dbms_output.put_line(v_sum);
END ;
当v_i=8时,会跳转到<<at1>>的位置,并结束循环。
NULL语句
null语句被称为空语句,它表示不执行任何操作。
相关推荐
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。
以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...
PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...
Oracle SQL和PL/SQL是数据库管理和编程的重要工具,主要用于...这些笔记提供了学习SQL和Oracle数据库操作的基本框架,对于初学者来说是非常有价值的资源。通过实践和深入学习,可以掌握更复杂的查询技巧和PL/SQL编程。
总的来说,“PL/SQL超级笔记”应该涵盖了从基本语法到高级特性的全面教程,通过学习,新手可以逐步掌握如何使用PL/SQL进行数据库编程,从而更好地管理和操作Oracle数据库。配合"oracle_ppt"中的PPT材料,学习效果会...
在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...
以下是对PL/SQL学习笔记的详细解析: 1. **PL/SQL基本结构**: PL/SQL程序块由`DECLARE`、`BEGIN`、`EXCEPTION`和`END`四个部分组成。在`DECLARE`部分声明变量和其他元素,`BEGIN`之后是执行语句块,`EXCEPTION`...
### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL...通过以上内容的学习,初学者可以从基础语法入手,逐步掌握PL/SQL的核心概念和技术细节,并通过实践应用不断提升自己的技能水平。
本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理、存储函数与存储过程以及触发器。 1. PL/SQL基本语法: PL/SQL程序由声明、执行和异常处理三部分组成。...
PL/SQL(Procedure Language for SQL)是Oracle数据库的一种专用编程语言,它结合了SQL命令与过程化脚本,从而允许混合数据库查询与程序逻辑控制结构。存储过程是一种在数据库上创建并保存的过程,它由一系列SQL语句...
1. **PL/SQL基础知识**:介绍PL/SQL的基本语法,包括变量声明、常量定义、数据类型、运算符、控制结构(如IF-THEN-ELSIF、CASE、循环)以及异常处理机制。 2. **PL/SQL块结构**:讲解如何构建声明部分、执行部分和...
### PL/SQL 学习笔记知识点详解 #### 1. PL/SQL 基本结构 - **DECLARE**: 在此部分声明变量、常量、数据类型及游标。 - **BEGIN**: 主程序体开始,可以包含任何合法的PL/SQL语句。 - **EXCEPTION**: 异常处理部分,...
Oracle数据库管理员(DBA)的PL/SQL学习笔记主要包括了以下几个知识点: 一、PL/SQL基本的语法格式 PL/SQL是Oracle提供的过程化语言,其基本的语法格式如下: - 声明部分(DECLARE):用于声明变量、常量、游标、...
Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM表名WHERE条件,这允许我们从一个或多个表中提取满足特定条件的数据。INSERT语句用于向表中...
接下来,《PLSQL基础教程-必看.pdf》提供了更基础的PL/SQL知识,包括基本语法、控制流程语句、游标、数据库连接和事务管理。这为初学者提供了一个扎实的学习起点,让他们能够编写出高效、可靠的数据库脚本。 《SQL...
PL/SQL还提供了异常处理机制,这使得开发者能够集中处理Oracle数据库可能出现的各种错误和PL/SQL自身的语法错误,简化了错误处理流程,提高了程序的健壮性。异常处理通常包括在PL/SQL块的`EXCEPTION`部分,用于捕获...
Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...