- 浏览: 36940 次
- 性别:
- 来自: 西安
最新评论
( 一 )PL/SQL
PL/SQL 是过程语言 (Procedural Language) 与结构化查询语言 (SQL) 结合而成的编程语言
PL/SQL 分为三个部分,声明部分、可执行部分和异常处理部分
[DECLARE
declarations]
BEGIN
executable statements
[EXCEPTION
handlers]
END;
- 常用命令
set serviceout on/off;-- 显示设置
set auto on/off;-- 提交自动设置
1. 变量和常量
在声明部分声明,使用前必须先声明;
声明时必须指定类型;
给变量赋值有两种方式: [:=] 或 [select into]
定义常量: [ 常量变量名 ] CONSTANT [ 数据类型 ] := [] ;
1.1 数字数据类型
常用的 NUMBER ( decimal 、 float/integer/real )
1.2 字符数据类型
char(<2000)/varchar2(<4000)/long(<2G)/raw(<2000)/long raw(<2G)
1.3 用于存储大文本、图像、视频等非结构化数据
LOB ( <4G )
1.4 属性类型
- %TYPE 表示引用或数据库列的数据类型
- record 定义记录类型变量,将多个基本数据类型捆绑在一起
SQL> declare
2 type rectype is record (
3 dnnm scott.dept.dname%type ,
4 locc scott.dept.loc%type
5 );
6 rec rectype;
7 begin
8 select dname,loc into rec from dept where deptno = &no;
9 dbms_output.put_line(rec.dnnm);
10 dbms_output.put_line(rec.locc);
11 end;
12 /
you
- %ROWTYPE 表示表中一行的记录类型
SQL> declare
2 arow emp%rowtype;
3 begin
4 select * into arow from emp where emp.empno = &no;
5 dbms_output.put_line(arow.empno||arow.ename);
6 end;
7 /
1.5 定义表类型变量
表类型变量和数据表是有区别的,这里的表类型类似数组,定义表类型变量的语句如下:
---------------------------------------------------------
type [myTableType] is table of [varchar2(4)] index by binary_integer;
mytable myTableType;
---------------------------------------------------------
1.5.1 一维表
SQL> declare
2 type tabletype is table of varchar2(8) index by binary_integer ;
3
4 table1 tabletype;
5 begin
6 table1(1):=' 成都 ';
7 table1(2):=' 长沙 ';
8 table1(3):=' 武汉 ';
9 table1(4):=' 西安 ';
10 table1(5):=' 北京 ';
11 dbms_output.put_line(table1.count);
12 dbms_output.put_line(table1.first);
13 dbms_output.put_line(table1.last);
14 dbms_output.put_line(table1.prior(2));
15 dbms_output.put_line(table1.next(2));
16 end;
17 /
* 可以对表使用 count,first,last,prior,next ,如上。都会返回数字。
1.5.2 多维表
declare
type tabletype is table of dept%rowtype index by binary_integer ;
table1 tabletype;
num number := 1;
begin
while num > 0 loop
num := &n;
select * into table1(num) from dept where dept.deptno = num;
dbms_output.put_line(table1(num).deptno||table1(num).dname);
end loop ;
end ;
2. 控制结构
2.1 条件控制
if 语句根据条件执行一系列语句,有三种形式: if-then 、 if-then-else 和 if-then-elseif
SQL> declare
2 sall number;
3 begin
4 select nvl(sal,0)+nvl(comm,0) into sall from emp where empno = &no;
5 if sall < 1000 then
6 dbms_output.put_line(' 那么低的工资,饿死你 ');
7 end if;
8 if sall >= 1000 and sall < 1500 then
9 dbms_output.put_line(' 温饱,继续努力 ');
10 end if;
11 if sall >= 1500 then
12 dbms_output.put_line(' 有钱人儿 ');
13 end if;
14 end;
15 /
温饱,继续努力
2.2 循环控制
PL/SQL 有 4 中循环结构
2.2.1 while..loop..end loop
SQL> declare
2 i integer := 0;
3 begin
4 while i < 5 loop -- 循环条件
5 insert into dept(deptno,dname) values (i,'you');
6 i:=i+1;
7 end loop; -- 结束循环
8 end;
9 /
2.2.2 loop..exit..end loop
SQL> declare
2 i integer:=21;
3 begin
4 loop
5 insert into dept(deptno,dname) values(i,'java');
6 i:=i-2;
7 if i < 15 then
8 exit;
9 end if;
10 end loop;
11 end;
12 /
2.2.3 loop..exit when..end loop
SQL> declare
2 i integer:=9;
3 begin
4 loop
5 insert into dept(deptno,dname) values(i,'ermao');
6 dbms_output.put_line(i);
7 i:=i-1;
8 exit when i=5;
9 end loop;
10 end;
11 /
2.2.4 for..in..loop..end
SQL> declare
2 i integer:=1;
3 begin
4 for i in 1..9 loop – 包括 1 和 9
5 insert into dept(deptno,dname) values(i,'ermao');
6 end loop;
7 end;
8 /
3. 游标
游标式从数据表中提取出来的数据以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向首记录,利用 fetch 语句可以移动指针,从而对游标中的数据进行各种操作,然后将结果写回到数据表中。
- 游标的分类:隐式游标、显示游标, REF 游标
- 游标的属性有:
– %FOUND – SQL 语句影响了一行或多行时为 TRUE
– %NOTFOUND – SQL 语句没有影响任何行时为 TRUE
– %ROWCOUNT – SQL 语句影响的行数
– %ISOPEN - 游标是否打开,始终为 FALSE
3.1 隐式游标
1) 在 PL/SQL 中使用 DML 语句时自动创建隐式游标
2) 隐式游标自动声明、打开和关闭,其名为 SQL
3) 通过检查隐式游标的属性可以获得最近执行的 DML 语句的信息
只有在 DML 语句影响一行,或多行时,才返回 True
SQL> set serveroutput on;
SQL> declare
2
3 begin
4 delete from dept where deptno = 2;
5 if sql%found then
6 dbms_output.put_line(' 成功删除 ');
7 else if sql%notfound then
8 dbms_output.put_line(' 查无此条 ');
9 else
10 dbms_output.put_line(' 异常 ');
11 end if;
12 end if;
13 end;
14 /
成功删除
3.2 显式游标
显式游标在 PL/SQL 块的声明部分定义查询,该查询可以返回多行
- 操作过程:打开游标—— > 提取行—— > 给变量—— > 关闭游标
- 定义方法: cousor [ 游标名 ] is select 语句 ; ==>cousor 是定义游标的关键词
- 打开游标 open [ 游标名 ]
- 提取游标中的数据: fetch [ 游标名 ] into [ 变量名 1, 变量名 2,... 或 记录型变量名 record]
- 关闭游标: close [ 游标名 ]
SQL> declare
2 cursor cur_getdname
3 is select dept.dname from dept;
4
5 deptname scott.dept.dname%type;
6 begin
7 open cur_getdname;
8 loop
9 fetch cur_getdname into deptname;
10 if cur_getdname%notfound then
11 exit;
12 end if;
13 dbms_output.put_line(deptname);
14 end loop;
15 close cur_getdname;
16 end;
17 /
过程(procedure)
1.过程的语法结构:
create or replace procedure [过程名] as
...声明语句段;
begin
...执行语句段;
exception
... 异常处理;
end;
例如:
create procedure pro_sel
as
cursor cur_sel is select * from emp;
arow scott.emp%rowtype;
begin
open cur_sel;
loop
fetch cur_sel into arow;
exit when cur_sel%notfound ;
dbms_output.put_line(arow.ename);
end loop;
close cur_sel;
end;
begin
pro_sel;
end;
发表评论
-
数据库原理之连接查询
2012-09-10 09:19 755连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交 ... -
Oracle sql 语句练习
2012-09-10 00:23 3466create table student(sno varcha ... -
Oracle 内置函数
2012-09-08 08:34 668SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制 ... -
Oracle 异常处理
2012-09-04 09:48 8301.用户登录数据库异常:share memory rea ... -
Oracle 对象
2012-09-03 23:16 740Oracle 数据库对象1.同义词(synonym) 1.1 ... -
Oracle事务
2012-09-02 22:00 8411.SQL语言包括三种主要 ... -
Oracle权限与角色
2012-09-02 11:05 851(I)Oracle 管理的用户 1.[system]默认密码m ...
相关推荐
### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
Oracle PL/SQL 是Oracle数据库系统中的过程化语言,它结合了SQL查询功能和高级编程特性,使得开发者可以创建复杂的数据库应用程序。在Oracle 11g R2版本中,PL/SQL与SQL Developer一起使用,提供了丰富的开发环境来...
《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...
### Oracle PL/SQL Programming知识点概览 #### 一、书籍基本信息 - **书名**:Oracle PL/SQL Programming(第五版) - **作者**:Steven Feuerstein 和 Bill Pribyl - **出版日期**:2009年10月1日 - **出版社**:...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和Procedural Language的编程结构,用于在Oracle数据库环境中创建复杂的应用程序。在"Oracle PL/SQL实例精讲student数据库模式"中,我们将深入探讨...
Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言的特性相结合,为数据库开发提供了丰富的功能。在Oracle数据库环境中,PL/SQL是开发高效、可靠和可维护的数据库应用程序的关键工具。以下是对"Oracle PL/...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和PL(过程化语言)的程序设计特性,是Oracle数据库系统中的核心组件之一。《精通Oracle PL/SQL》这本书深入探讨了这个语言的...
《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...
Oracle PL/SQL最佳实践 Oracle PL/SQL是一种强大的编程语言,用于在Oracle数据库环境中构建复杂的业务逻辑和数据处理任务。Steven Feuerstein,被誉为Oracle PL/SQL语言的大师,分享了他在这一领域的关键最佳实践和...
Oracle PL/SQL 语言是Oracle数据库系统中的一种高级编程语言,它是SQL的扩展,专为数据库管理和应用程序开发设计。PL/SQL集成了SQL的查询、操纵、定义和控制功能,并添加了过程化编程元素,使其成为数据库管理和开发...
Oracle PL/SQL 编程及最佳实践 Oracle PL/SQL 是一种高级编程语言,用于开发 Oracle 数据库中的存储过程、函数和触发器。PL/SQL language 提供了强大的编程能力,可以实现复杂的业务逻辑,并且与 Oracle 数据库紧密...
《ORACLE PL/SQL 程序设计(第五版)》是Oracle数据库开发领域的一本经典教程,专注于讲解如何使用PL/SQL这一强大的过程化语言进行数据库编程。这本书旨在帮助读者掌握PL/SQL的基本概念、语法和高级特性,以便在实际...