PL/SQL程序设计.

Slides:



Advertisements
Similar presentations
人间美地 ─ 蝶韵阁. ~ 蝶 韵 阁 ~ 位桃园大溪镇,三峡交流道下去 12 分钟车程 住着潇洒的朱大哥、毛毛夫妻一家 还有 自由飞翔的蓝鹊、飞鹰、松鼠 一群悠闲采蜜翩翩飞舞的凤蝶 更惊讶的是一对珍贵的娇客 ─ 蜂蛾 那根长长的吸管是大自然的奇迹 蜂蛾已让我们惊艳不已 但 ─ 还有更多的美丽与惊奇、、、.
Advertisements

第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
作業一 : USING DBMS ( 使用 DB2 及 SQL 基本練習 ) 報告人:學生楊群期 學號: 課程 : 高等資料庫 講師 : 楊維邦教授.
1 第 5 章 SQL 语句基础 在 Oracle 数据库中,为了方便管理用户所创建的 数据库对象,引入了模式的概念,这样用户所创建的 数据库对象就都属于该用户模式。对于一般的用户而 言,数据库中的数据是以表、视图行等方式存储的( 表和视图就是最基本的用户模式对象),用户只需要 根据自己的需求查询数据库,然后由数据库根据请求.
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
教学网站: 数据库及应用 授课教师:岳静 Tel: 教学网站:
5.1 掌握Power Scrip语言 5.2 使用控件 实训五 控件应用
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
人間美地─ 蝶韻閣 ..
第四章 数据库对象.
Access数据库程序设计 总复习.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
数据库原理及设计 --作业.
文科计算机小公共课规划教材 Access 程序设计.
数据库原理及应用 第10章 事务与锁 10.1 事务 10.2 锁.
Chap 13 視界與資料庫程式設計.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
第5章 数据库保护 之事务.
Oracle数据库 Oracle 子程序.
資料庫管理 資管二 賴柏融.
PL/SQL程序设计 过程, 函数 Trigger 对象关系数据库技术.
主机DB2数据库应用与编程 任课老师:王湖南 四川大学计算机(软件)学院.
Oracle数据库入门.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
第四章:触发器   触发器类似于过程、函数,因为它们都是拥有说明部分、语句执行部分和异常处理部分的有名的PL/SQL块。与包类似,触发器必须存储在数据库中,并且不能被块进行本地化说明。但是,对于过程而言,可以从另一个块中通过过程调用显式地执行一个过程,同时在调用时可以传递参数。对于触发器而言,当触发事件发生时就会显式地执行该触发器,并且触发器不接受参数。
第六章 學習SQL語言.
ORACLE 第五讲 PL/SQL编程基础.
課程名稱:資料庫系統 授課老師:李春雄 博士
解振宇 客户技术经理 客户售前技术部 微软中国有限公司广州办事处
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
第三章 关系数据库标准查询语言SQL 3.1 SQL概述 3.2数据定义语言(DDL) 3.3 SQL的数据查询(DML)
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
数据库实验指导(一)
Transact-SQL 語言設計教學.
SQL Server 2000 数据库入门.
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第三章:包   包(package)是一个可以将相关对象存储在一起的PL/SQL结构。包包含了两个分离的部件------包说明(specification)和包主体(body)。每个部件都单独被存储在数据字典中。包只能存储在数据库中,不能是本地的。除了可以将相关对象作为一组存在一起以外,包也是十分有用的,因为它们在依赖性方面的限制是比较小的。也有许多性能上的优点。
第9章 事务.
SQL SERVER 一些经典语句 1.
实验4:PL-SQL编程 1.实验目的 2.实验原理 PL/SQL是一种过程化语言,属于第三代语言,本实验在与熟悉使用PL/SQL编程.
医院职工公费医疗系统.
第四讲 数据库对象(视图、序列、同义词、索引)
iRepor报表设计基础 IReport安装 普通实体报表 数据结果集报表 工作流主从报表 饼状图报表 柱状图,曲线图报表 条形码报表
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
分布式数据库系统及其应用.
数据库应用技术 SQL Server 2005.
第四章 PL/SQL控制结构 If-then:如果条件为true,则执行一行或多行代码,如果条件为假,转到end if之后。
ORACLE 第九讲 触发器.
第11章 事务与锁 11.1 事务Transact 11.2 数据并发的问题 11.3 锁Lock 11.4 事务隔离级别.
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
第 15 章 自訂函數與順序物件.
SQL查询语句 蔡海洋.
17 交易處理與鎖定 17-1 交易的基礎 17-2 交易處理 17-3 並行控制 17-4 資料鎖定 17-5 死結問題.
第三章 SQL Server数据管理.
第六類 資料庫備份與回復.
Oracle Database 10g基础教程 清华大学出版社
Visual Basic程序设计 第13章 访问数据库
第六章 类属B树索引技术 对基于树的索引方法给出一种通用算法。该算法是建立在类属B树的概念之上开发的。它将类型系统开放,使系统能支持用户自定义的数据类型、函数和某些特殊的查询谓词的集合。并且,将新的数据类型、函数、查询谓词等登记到数据库管理系统中,
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
Principle and Technology of Database
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

PL/SQL程序设计

什么是PL/SQL 对SQL的扩充 过程化 后台技术

PL/SQL 程序结构 Declare begin exception end /

an_sal :=mon_sal *12 + nvl(comm,0) ; 变量类型 v_ename char(10) ; married boolean :=true ; v_ename emp.ename %TYPE ; emp_rec emp % ROWTYPE ; 变量赋值 an_sal :=mon_sal *12 + nvl(comm,0) ; Select ename INTO v_ename from emp where eno=` e01 ` ;

程序控制结构 EXIT [WHEN e] ; IF e1 THEN ELSIF e2 THEN ELSIF e3 THEN ELSE END IF; WHILE e LOOP END LOOP ; FOR i IN 1..10 LOOP END LOOP ; EXIT [WHEN e] ;

例 外 EXCEPTION WHEN 例外名1 THEN … WHEN 例外名2 THEN … … WHEN OTHERS THEN … … … … WHEN OTHERS THEN … … END ;

系统预定义例外 dup_val_on_index no_data_found too_many_rows Select * into …

用户自定义例外 例外名定义 ex1 exception ; 引起例外 raise ex1 ;

例 一 用户注册检查 tin : tout : userlog : Ud ps msg Userid passwd …

例 一 DECLARE tin_rec tin % rowtype ; v_passwd userlog.passwd % type ; errps EXCEPTION ; BEGIN select * into tin_rec from tin ; select passwd into v_passwd from userlog where userid = tin_rec.ud ;

例 一 insert into tout values(`login ok` ); else raise errps ; end if ; if tin_rec.ps = v_passwd then insert into tout values(`login ok` ); else raise errps ; end if ; exception when errps then insert into tout values(`password error`〕; when no_data_found then insert into tout values(`userid error’〕; end;

光 标 Oracle 使用Private SQL Area的工作区执行SQL语句,并保存语句执行结果和相关的状态信息。 光标是一个PL/SQL结构,利用光标可以命名这些工作区,并通过光标访问工作区中的信息。

隐式光标 隐式光标名:SQL 访问: SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND

显式光标 定义 delcare cursor c1 is select … 打开 open c1 读 fetch c1 into 变量/记录 close c1

显式光标 读取状态信息 c1%found c1%rowcound 用光标定义记录 temp c1%rowtype

例 二 问题: 为职工长工资。从最低工资长,工资总额限制在50万元。 Declare cursor c1 is select eno,sal from emp order by sal for update of sal ; emp_num number :=0 ; s_sal number ; e_sal number ; e_eno char(3);

例 二 Begin open c1; select sum(sal) into s_sal from emp ; while s_sal<500000 loop fetch c1 into e_eno,e_sal ; exit when c1%notfound ; update emp set sal=sal*1.1 where eno=e_eno ; s_sal:=s_sal + e_sal*0.1; emp_num:=emp_num+1 ; end loop ; where current of c1 ;

例 二 Close c1; insert into msg values(emp_num , s_sal) ; commit ; end;

光标for循环 For r in c1 loop r.sal end loop; 如何打开光标 如何读光标区 如何判断读完 如何关闭光标

建立数据库对象-触发器 Create trigger emp_check before/after insert or update or delete on emp begin if to_char(sysdate,`dy`)=`sun` then raise_application_error(…,`… … `) ; end if , end ;

建立存储过程 Create procedure raise_salary (emp_id integer,increase real) is begin update emp set sal=sal+increase where eno=emp_id ; end ;

存储过程调用 在SQL*Plus中 execute raise_salary(12,46.50) 在PL*SQL中 begin end ;

分布式数据库功能

分布式DB 物理上分布在网络不同节点上的数据,从逻辑上可看作是一个整体(DB)。 每个节点 具有 场地自治 跨节点 的 全局操作

访问远程数据库 本地(北京) orcale1 远程(上海) oracle2 ora1 ora2 数据库链 S2

访问远程数据库上的表 create database link L1 connect to 用户名 identified by 口令 using `s2`; select * from dep@L1 ; select ename,tel from emp, dep@L1 where emp.dno=dep.dno ; update dep@L1 set tel=`2233` ;

建立数据库别名 create synonym dep for dep@L1 ; select ename,tel from emp, dep where emp.dno=dep.dno ;

分片

分片 - 视图 水平分片 垂直分片 create view emp as select emp1.ename,emp2.sal select * from emp1@L1 union select * from emp2@L2; 垂直分片 create view emp as select emp1.ename,emp2.sal from emp1,emp2 where emp1.eno=emp2.eno ;

Create snapshot log on emp 复制 - 快照 Create snapshot emp refresh fast complete force start with sysdate next next_day(sysdate,`Monday`) as select * from emp@L1 ; 触发器

并发控制

事务的概念 事务是一个操作序列,一个事务中的操作要么都做,要么都不做。事务是一个不可分割的工作单元(原子性)。 事务是并发控制的基本单位。 事务开始- 事务结束(commit / rollback) DDL语句 - 单语句事务 set autocommit on (sql*plus)

事务回滚 rollback ; savepoint a rollback to a 人为回滚 系统回滚

并发存取数据库 R:读用户 W:写用户 R W R W

W - W 10 8 7 8 10 写丢失 10 7

防止写丢失-加锁 自动加行锁 insert、update、delete 读提前加锁 select * … For update of … 锁语句 LOCK 在事务中加的锁在事务结束时自动打开。

死锁 事务A 事务B UPDATE emp SET sal=sal+500 WHERE ename='张珊';

如何解决死锁 Oracle系统在检测到一个死锁时,它会给引起死锁的其中一个事务发出一个错误信息,然后回滚该事务的当前语句。并告之用户应显式地回滚他的事务,而其他用户就会因获得资源而完成事务,死锁就被解开了。

Set transaction read only 只读事务 实现读一致性-只读事务 读事务 Set transaction read only 只读事务 commit 写 事 务

防止读脏数据 写事务 READ

防止读脏数据 write read

并发控制演示 5 5 3 3 1 3 1 1 Select num ...for update Update … num=1 ? cummit 3 Update … num=1 1 Select num 3 cummit 1 Select num 1

Set transaction read only 并发控制演示 5 Set transaction read only Select num 5 Update num=3 3 3 commit Select num 5 Update num=1 1 commit Select num 3 commit 1 Select num 1