数据库系统原理与开发-数据库存储过程

合集下载

简述存储过程概念和作用

简述存储过程概念和作用

简述存储过程概念和作用
存储过程是一组预编译的SQL语句集合,它们被存储在数据库中,并可以通过一个单独的数据库调用执行。

存储过程通常用于执行特定的任务或操作,并且可以接受参数、返回值以及执行流程控制。

存储过程的作用有多个方面。

首先,它们可以提高数据库的性能和安全性。

通过将一组SQL语句打包成一个存储过程,可以减少网络通信开销,提高执行速度。

此外,存储过程可以实现数据库逻辑的封装,减少了对数据库的直接访问,从而提高了数据库的安全性。

其次,存储过程可以简化复杂的操作。

通过将一系列SQL语句封装在一个存储过程中,可以减少客户端和应用程序的复杂性,提高了代码的重用性和可维护性。

存储过程还可以实现特定的业务逻辑,简化了客户端和应用程序的开发过程。

此外,存储过程还可以提供数据一致性和完整性。

通过存储过程,可以确保特定的业务规则和约束得到执行,从而保证了数据的一致性和完整性。

存储过程还可以实现数据验证、清理和转换,确
保数据的质量和准确性。

最后,存储过程还可以提供安全性和权限控制。

数据库管理员可以通过存储过程来控制用户对数据库的访问和操作权限,从而保护敏感数据和防止恶意攻击。

总之,存储过程是数据库中非常重要的一部分,它可以提高数据库的性能和安全性,简化复杂的操作,确保数据的一致性和完整性,以及提供安全性和权限控制。

因此,存储过程在实际数据库应用中具有非常重要的作用。

计算机科学与技术——数据库系统原理

计算机科学与技术——数据库系统原理

第一章数据库系统概述本章学习重点:1.数据库系统的三级模式结构2.数据模型中概念层模型(E-R)模型域逻辑层模型(关系模型)第一节数据库基本概念一、数据(Data):是描述事物的符号记录,是指用物理符号记录下来的、可以鉴别的信息包括数字、字母、文字、特殊字符组成的文本数据,也可以是图形、图像、动画、影像、声音、语言等多媒体数据。

例如,日常生活和工作中使用的客户档案记录、商品销售记录等都是数据二、数据库(Database,简称DB)1.定义:是长期储存在计算机中的有组织的、可共享的(大量)数据集合2.数据库中存储的数据具有永久存储、有组织和可共享三个基本特点三、数据库管理系统(Data Management System,简称DBMS)数据库管理系统产生的时期是20世纪60年代后期DBMS必须具有将数据库从错误状态恢复到某一已知的正确状态的功能,这就是数据库的故障恢复1.定义:是位于应用程序(用户)与操作系统之间的一层数据管理软件2.主要功能(1)数据定义功能:提供数据定义语言(DDL)定义数据库中的数据对象例如:表、视图、存储过程、触发器等(2)数据操纵功能:提供数据操纵语言(DML)操纵数据实现对数据库的基本操作例如:查询、插入、删除和修改(3)数据库的运行管理:保证数据的安全性(用户只能使用视图定义中的数据,而不能使用视图定义外的其它数据)、完整性(数据的正确性、有效性和相容性,防止错误的数据进入数据库)、多用户对数据的并发使用以及发生故障后的系统恢复(4)数据库的建立和维护功能:创建数据库及对数据库空间的维护、数据库的备份与恢复功能、数据库的重组织功能和性能监视、分析等数据库恢复采用的方法:建立检查点、建立副本、建立日志文件(5)数据组织、存储和管理功能例如:索引查找、顺序查找(6)其他功能:主要包括与其他软件的网络通信功能、不同数据库管理系统之间的数据传输以及相互访问功能等四、数据库系统(Database System,DBS):是指在计算机中引入数据库技术之后的系统1.通常一个完整的数据库系统包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户2.数据库管理员(Database Administrator,DBA):专门负责对数据库进行维护,并保证数据库正常、高效运行第二节数据管理技术的发展一、人工管理阶段(20世纪50年代中期以前)特点:1.数据不保存2.应用程序管理数据3.数据面向应用注意:记录内无结构,整体无结构二、文件系统阶段(20世纪50年代后期到60年代中期)缺陷:数据冗余、数据不一致、数据联系弱特点:1.数据的管理者:文件系统,数据可长期保存2.数据面向的对象:某一应用程序3.数据的共享程度:共享性差、冗余度大4.数据的结构化:记录内有结构,整体无结构5.数据的独立性:独立性差,数据的逻辑结构改变必须修改应用程序6.数据控制能力:应用程序自己控制三、数据库系统阶段(20世纪60年代后期以来)特点:1.数据集成2.数据共享性高3.数据冗余度小4.数据一致性5.数据独立性高6.实施统一管理与控制7.减少应用程序开发与维护的工作量第三节数据库系统的结构一、数据库系统的三级模式结构1.模式:也称为概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图2.外模式:也称为子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述DBMS提供子模式描述语言(Subschema DDL)来严格地定义子模式3.内模式:也称为存储模式(Storage Schema),它是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式4.三级模式结构的两层映像与数据独立性(1)外模式/模式映像(逻辑独立性)(2)模式/内模式映像(物理独立性)数据独立性:不会因为系统数据库存储(物理)结构与数据逻辑结构的变化而影响应用程序二、数据库系统的运行与应用结构1.客户/服务器(Client/Server,C/S)模式(需要下载)例如:QQ、桌面客户端游戏2.浏览器/服务器(Browser/Server,B/S)模式例如:网站、在线web游戏第四节数据模型一、数据特征与数据模型组成要素1.数据结构:描述的是系统的静态特性及数据对象的数据类型、内容、属性以及数据对象之间的联系2.数据操作:描述的是系统的动态特性,是对各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则3.数据约束:描述数据结构中数据间的语法和语义关联,包括相互制约与依存关系以及数据动态变化规则,以保证数据的正确性,有效性与相容性二、数据模型的分类1.概念层数据模型(1)信息世界中的基本概念A.实体(Entity): 客观存在并可相互区别的事物称为实体,可以是具体的人、事、物或抽象的概念,B.属性(Attribute):实体所具有的某种特性称为实体的属性,一个实体可以由多个属性来描述C.码或键(Key):唯一标识实体的属性集称为码D.域(Domain):属性的取值范围称为该属性的域E.实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型F.实体集(Entity Set):同型实体的集合称为实体集G.联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系实体型间联系:★一对多1:N★一对一1:1★多对多N:M(2)概念模型的表示方法概念模型:用来描述现实世界的事物,与具体的计算机系统无关表达用户需求观点的数据全局逻辑结构的模型最典型的概念模型是实体联系(E-R)2.逻辑层数据模型(1)层次模型(2)网状模型(3)关系模型(4)面向对象模型在面向对象技术中,相同元素的有序集合,并且允许有重复的元素的复合数据类型是列表类型3.物理层数据模型:也称为数据的物理模型(Physical Model),其描述数据在存储介质上的组织结构,是逻辑模型的物理实现,即每一种逻辑模型在实现时都有与其相对应的物理模型逻辑模型是从数据库实现的观点出发,对数据建模第二章关系数据库本章学习重点:1.关系数据库的相关概念2.关系规范化理论,各个范式之间的转化关系第一节关系数据库概述系统而严格地提出关系模型的是美国IBM公司的E.F.Codd1.1970年提出关系数据模型2. E.F.Codd在1970年发表了论文《Communication of the ACM》3.之后,提出了关系代数和关系演算的概念4.1972年提出了关系的第一、第二、第三范式5.1974年提出了关系的BC范式关系数据库应用数学方法来处理数据库中的数据80年代后,关系数据库系统成为最重要、最流行的数据库系统典型实验系统:System R、University INGRES典型商用系统:ORACLE(占有率最高)、SYBASE、INFORMIX、IBM DB2课程中使用的是MySQL第二节关系数据模型一、关系数据结构关系模型的数据结构非常简单,只包含单一的数据结构,即关系基本术语:1.表(Table):表,也称为关系,是一个二维的数据结构,它由表名构成表的各个列(如学号、姓名等)及若干行数据(各个学生的具体信息)组成。

数据库自定义函数、存储过程和触发器

数据库自定义函数、存储过程和触发器

自定义函数、 第9章 自定义函数、存储过程和触发器 《 SQL Server 数据库管理与开发》
1自定义函数 概念 创建 查看 调用 修改 删除 2存储过程 3触发器 实训 小结
1 自定义函数
1.1 自定义函数的概念 1.2 创建自定义函数 1.3 查看自定义函数信息 1.4 调用自定义函数 1.5 调用自据库管理与开发》
自定义函数、 第9章 自定义函数、存储过程和触发器
自定义函数的概念 创建自定义函数 9.1 自定义函数 查看自定义函数信息 调用自定义函数 存储过程的概念 调用自定义函数 创建存储过程 9.2 存储过程 删除自定义函数 查看存储过程信息 触发器的概念 执行存储过程 创建触发器 修改存储过程 9.3 触发器 触发器使用限制 删除存储过程 修改触发器 常用系统存储过程 删除触发器 使用触发器的优点
《 SQL Server 数据库管理与开发》
自定义函数、 第9章 自定义函数、存储过程和触发器
教学提示:在数据库实际应用中, 教学提示:在数据库实际应用中,存在有带变量数据 处理需求,如某班学生信息表、 处理需求,如某班学生信息表、某老师带过的学 某班某门课不及格学生等。自定义函数、 生、某班某门课不及格学生等。自定义函数、存 储过程、触发器是由一系列的T 储过程、触发器是由一系列的T-SQL 语句组成的 子程序,用来满足更高的应用需求,可以说是SQL 子程序,用来满足更高的应用需求,可以说是SQL 程序设计的灵魂, 程序设计的灵魂,掌握和使用好它们对数据库的 开发与应用非常重要。 开发与应用非常重要。 教学要求: 教学要求: 自定义函数、存储过程、触发器的概念、用途、 自定义函数、存储过程、触发器的概念、用途、 创建方法。 创建方法。 编写简单的自定义函数、存储过程、触发器。 编写简单的自定义函数、存储过程、触发器。

《数据库系统原理》实验指导书

《数据库系统原理》实验指导书

《数据库系统原理》实验指导书《数据库系统原理》实验指导书实验1 熟悉SQL Server 2000环境及数据库⽂件管理⼀、实验⽬的1、掌握登录SQL Server 2000的⽅法,熟悉SQL Server实⽤⼯具的使⽤;2、了解SQL Serve数据库的存储结构,掌握估算数据库⼤⼩技术;3、掌握创建数据库技术,掌握扩⼤和压缩数据库技术;4、掌握使⽤企业管理器⼯具和T-SQL语句及系统存储过程对数据库进⾏管理。

⼆、实验要求1、熟悉SQL Server 2000的⼯作环境,了解SQL Server主要管理⼯具的⽤途和使⽤⽅法。

2、掌握在SQL Server 2000环境下,利⽤企业管理器和T-SQL语⾔创建和管理数据库的⽅法。

三、实验设备、环境设备:奔腾II或奔腾II以上计算机环境:WINDOWS 98或WINDOWS NT、SQL SERVER 2000中⽂版四、实验原理、⽅法上机操作五、实验步骤及内容(⼀)实验步骤1、教师讲授2、教师演⽰3、学⽣实际操作(⼆)实验内容1、熟悉SQL Server 2000管理⼯具(1)企业管理器(Enterprise Manager)(2)查询分析器(Query Analyzer)(3)服务管理器(Service Manager)(4)事件探查器(Profiler)(5)导⼊和导出数据(Import and Export Data)(6)SQL Server其他管理⼯具2、数据库⽂件管理(1)数据库的创建和删除。

①在企业管理器中建⽴⼀个图书读者库。

图书读者数据库中将包括⼀个数据⽂件和⼀个⽇志⽂件,各⽂件的属性见表1-1。

②删除上题所建的数据库然后⽤T-SQL语句重新创建。

(2)修改数据库①查看图书读者数据库的属性及数据⽂件和⽇志⽂件的空间使⽤情况。

②在企业管理器中,⾸先扩⼤图书读者数据库的主数据⽂件的⼤⼩,然后查看扩⼤后的数据库属性,接着收缩主数据⽂件到定义时的⼤⼩。

数据库原理及应用实验教案

数据库原理及应用实验教案

数据库原理及应用实验教案一、实验目的1. 理解数据库的基本概念,掌握数据库的基本操作。

2. 熟悉数据库管理系统,了解数据库设计原则。

3. 学会使用SQL语言进行数据的增、删、改、查等操作。

4. 掌握数据库的索引、视图和存储过程等高级功能。

5. 培养实际操作数据库的能力,提高解决实际问题的技能。

二、实验内容1. 数据库的创建与管理创建新数据库打开现有数据库数据库的备份与恢复2. 表的创建与管理表的创建表结构的修改表的删除表的数据插入、删除和修改3. SQL语言基础数据定义语句(CREATE、ALTER、DROP)数据查询语句(SELECT)数据操纵语句(INSERT、UPDATE、DELETE)数据控制语句(GRANT、REVOKE)4. 索引与约束索引的创建、修改和删除主键、外键的设置与维护唯一约束和检查约束的设置5. 视图与存储过程视图的创建、修改和删除存储过程的创建、修改和删除存储过程的调用三、实验环境1. 硬件环境:计算机实验室,每台计算机配备数据库管理系统软件。

2. 软件环境:数据库管理系统软件(如MySQL、Oracle、SQL Server 等),编程语言环境(如Python、Java等),文本编辑器或集成开发环境(如Visual Studio Code、Eclipse等)。

四、实验步骤1. 实验准备:安装并配置数据库管理系统软件,了解实验内容和要求。

2. 实验一:数据库的创建与管理创建一个名为“实验数据库”的新数据库。

打开已存在的数据库,进行备份和恢复操作。

3. 实验二:表的创建与管理创建一个名为“学生”的表,包括学号、姓名、年龄、性别等字段。

插入、删除和修改表中的数据。

4. 实验三:SQL语言基础使用SELECT语句查询学生表中的数据。

使用INSERT、UPDATE和DELETE语句操作学生表数据。

5. 实验四:索引与约束为学生表的学号字段创建索引。

设置主键、外键、唯一约束和检查约束。

SQL Server 2005数据库原理及应用教程第8章 存储过程和触发器

SQL Server 2005数据库原理及应用教程第8章 存储过程和触发器

2.相关注意事项 ①不能将 CREATE PROCEDURE语句与其他 SQL 语句组合 PROCEDURE语句与其他 到单个批处理中。 ②创建存储过程的权限默认属于数据库所有者,该所有者可将 此权限授予其他用户。 ③存储过程是数据库对象,名称必须遵守标识符规则。 ④只能在当前数据库中创建存储过程。 ⑤一个存储过程的最大尺寸为128M。 ⑤一个存储过程的最大尺寸为128M。 ⑥可以在存储过程内引用临时表。 ⑦如果执行的存储过程调用另一个存储过程,则被调的存储过 程可以访问由第一个存储过程创建的包括临时表在内的所有 对象。 ⑧存储过程中参数的最大数量为2100。 ⑧存储过程中参数的最大数量为2100。 ⑨不要以sp_为前缀创建任何存储过程。 ⑨不要以sp_为前缀创建任何存储过程。
1.语法格式 创建存储过程的语法格式: CREATE PROC[EDURE] procedure_name[;number] [{@parameterdata_type} [VARYING][=default][OUTPUT] ][,...n] WITH AS sql_statement [ ...n ] ①procedure_name:用于指定要创建的存储过程的名称。 procedure_name:用于指定要创建的存储过程的名称。 ②number:该参数是可选的整数,它用来对同名的存储过程分组,以便用 number:该参数是可选的整数,它用来对同名的存储过程分组,以便用 一条 DROP PROCEDURE 语句即可将同组的过程一起除去。 ③@parameter:过程中的参数,在 CREATE PROCEDURE 语句中可以 @parameter:过程中的参数,在 声明一个或多个参数。 ④data_type:用于指定参数的数据类型。 data_type:用于指定参数的数据类型。 ⑤VARYING:用于指定作为输出OUTPUT参数支持的结果集。 VARYING:用于指定作为输出OUTPUT参数支持的结果集。 ⑥DEFAULT:用于指定参数的默认值。 DEFAULT:用于指定参数的默认值。 ⑦OUTPUT:表明该参数是一个返回参数。 OUTPUT:表明该参数是一个返回参数。 ⑧AS:用于指定该存储过程要执行的操作。 AS:用于指定该存储过程要执行的操作。 ⑨sql_statement:是存储过程中要包含的任意数目和类型的 Transactsql_statement:是存储过程中要包含的任意数目和类型的 TransactSQL 语句。

数据库-原理部分

数据库-原理部分

1.1.1 数据、数据库、数据库管理系统、数据库系统 二、数据库管理系统(DataBase Management System , DBMS) 上节提到的数据库的功能/特性不是数据库中的数据固有 的,是靠管理或支持数据库的系统软件——DBMS——提 供的。
DBMS任务:
· 对数据资源进行管理,使之能为多个用户共享。 · 保证数据的安全性/可靠性/完整性/一致性/独立性
2. 文件系统阶段(50年代后期——60年代中期) 特点: · 计算机技术有了很大的发展,开始广泛应用于信息处理 · 存储设备有了磁盘、磁鼓等可直接存取的设备 · 计算机有了操作系统,包括文件管理系统,用户可将数
据组织成文件体交给系统进行自动管理。
· 数据可长期保存在磁盘等存储设备上 · 程序和数据有了一定的独立性,且文件有多种形式的组 织结构:顺序、链接、索引、直接
DBMS为保证其独立性和可以执行,大部分PDM 的实现工作由系统自动完成,而设计者只设计索 引、聚簇等特殊结构
1.2.3概念模型
实体-联系(Entity-Relationship)概念模型
首先介绍E-R模型中常用的几个重要概念,利用它们 可
构造出现实世界的数据的抽象描述。
1.实体、实体型、实体集 ● 实体(Entity) ——客观存在并能相互区分的事物 如:人;数据库课程;正是用的计算机;一 场足球赛不能严格地定义实体,正如几何中 点”,“线”一样。
1.1.1 数据、数据库、数据库管理系统、数据库系统 (5)具有安全控制机制,能够保证数据的安全、可靠 数据库要有一套安全机制,以便有效地防止数据库中的 数据被非法使用/修改; 数据库还要有一套备份/恢复机制,以保证当数据遭到破 坏时将数据立刻完全恢复==〉继续、可靠地运行。

数据库原理》教案高技

数据库原理》教案高技

《数据库原理》教案高技一、课程简介1.1 课程背景随着信息技术的快速发展,数据库技术已成为现代计算机系统的重要组成部分。

数据库原理课程旨在帮助学生了解并掌握数据库的基本概念、原理和技术,培养学生运用数据库技术解决实际问题的能力。

1.2 课程目标通过本课程的学习,学生将能够:(1)理解数据库的基本概念和原理;(2)掌握关系型数据库的设计和操作;(3)熟悉数据库管理系统的基本功能;(4)了解数据库技术的发展趋势。

二、教学内容2.1 数据库概述数据库的基本概念数据模型数据库系统的三级模式结构2.2 关系型数据库关系模型关系代数和SQL数据库设计原则2.3 数据库操作数据查询数据更新事务管理2.4 数据库管理系统的功能数据库的创建和管理用户权限管理备份与恢复三、教学方法3.1 讲授法通过讲解数据库的基本概念、原理和技术,使学生掌握数据库知识。

3.2 案例分析法分析实际案例,帮助学生理解数据库的应用场景和解决实际问题的能力。

3.3 实验操作法安排实验课程,让学生动手操作,巩固所学知识。

四、教学评价4.1 平时成绩包括课堂表现、作业完成情况等,占总评的30%。

4.2 期末考试包括选择题、填空题、简答题和案例分析题,占总评的70%。

五、教学计划5.1 课时安排共计32课时,其中理论课24课时,实验课8课时。

5.2 教学进度第1-4周:数据库概述和关系型数据库第5-8周:数据库设计原则和关系代数第9-12周:SQL和数据查询第13-16周:数据更新和事务管理第17-20周:数据库管理系统的功能第21-24周:案例分析和实验操作六、数据库设计原则与范式6.1 设计原则数据独立性数据完整性数据一致性数据共享性6.2 数据库范式第一范式(1NF)第二范式(2NF)第三范式(3NF)巴特卡规则七、关系代数与SQL7.1 关系代数选择(Selection)投影(Projection)连接(Join)除(Division)7.2 SQL基本操作数据查询(SELECT)数据更新(INSERT、UPDATE、DELETE)数据定义(CREATE、ALTER、DROP)数据控制(GRANT、REVOKE)八、数据库性能优化8.1 查询优化索引查询重写查询转换8.2 存储优化数据文件组织缓冲区管理磁盘I/O优化九、数据库安全与权限管理9.1 数据库安全用户认证访问控制数据加密9.2 权限管理用户角色权限分配与回收审计策略十、数据库发展趋势与新技术10.1 分布式数据库分布式数据库的概念分布式数据库的优缺点分布式数据库的实现技术10.2 云计算与大数据云计算数据库大数据技术数据仓库与OLAP10.3 数据库新技术内存数据库列存储数据库NoSQL数据库新型SQL数据库十一、数据库编程与应用11.1 数据库应用系统设计需求分析系统设计11.2 数据库编程技术存储过程触发器应用程序示例11.3 数据库应用开发工具集成开发环境(IDE)数据库访问接口(ODBC、JDBC)第三方库与框架十二、实验与实践12.1 实验目的与要求掌握数据库基本操作练习数据库设计与优化体验数据库应用开发12.2 实验内容数据库创建与管理数据表设计与操作存储过程与触发器编写数据库应用系统开发十三、案例分析13.1 案例一:企业员工信息管理系统需求分析系统实现13.2 案例二:在线书店数据库设计需求分析数据库设计系统实现十四、数据库项目实践14.1 项目概述项目背景项目需求项目目标14.2 项目实施数据库设计与实现系统开发与测试项目部署与维护14.3 项目评价功能完整性系统性能用户体验十五、课程总结与展望15.1 课程回顾主要知识点回顾实践技能总结15.2 数据库技术发展趋势新型数据库技术数据库与其他技术融合行业应用与创新15.3 课程建议与反馈教学方法改进教材与资源推荐学生学习建议重点和难点解析本文主要介绍了《数据库原理》课程的教案内容,包括课程简介、教学内容、教学方法、教学评价、教学计划等五个部分,以及后续的十五个章节。

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

6.3 数据库存储过程
【本节的主要内容】
•了解存储过程的概念
•掌握存储过程创建、删除的方法•掌握存储过程的执行方法
•掌握PostgreSQL的PL/SQL基本语法•理解存储过程的优缺点
一、什么是存储过程
•存储过程(Stored Procedure)是一种数据库的对象;
•由一组能完成特定功能的SQL 语句集构成;
•是把经常会被重复使用的SQL语句逻辑块封装起来,经编译后,存储在数据库服务器端;
•当被再次调用时,而不需要再次编译;
•当客户端连接到数据库时,用户通过指定存储过程的名字并给出参数,数据库就可以找到相应的存储过程予以调用。

二、创建存储过程
•不同的数据库系统创建存储过程的语法存在差异;
•许多数据库为创建存储过程和函数提供不同命令;
•如ORACLE、MySQL、SQL SERVER等数据库,使用CREATE PRECEDURE命令创建存储过程,使用CREATE FUNCTION命令创建函数。

•PostgreSQL使用CREATE FUNCTION命令创建存储过程。

4
三、创建存储过程的语法
CREATE [ OR REPLACE ] FUNCTION name
( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
[ RETURNS retype | RETURNS TABLE ( column_name column_type [, ...] ) ]
AS $$ //$$用于声明存储过程的实际代码的开始
DECLARE
-- 声明段
BEGIN
--函数体语句
END;
$$ LANGUAGE lang_name; //$$ 表明代码的结束, LANGUAGE 后面指明所用的编程语言
(1)name :要创建的存储过程名;(3)argmode :存储过程参数的模式可以为IN 、OUT 或INOUT ,缺省值是IN 。

(4)argname :形式参数的名字。

(5)RETURNS :返回值;RETURNS TABLE :返回二维表(2)OR REPLACE :覆盖同名的存储过程;
四、创建存储过程的示例
创建一个名为countRecords()的存储过程统计STUDENT表的记录数。

CREATE OR REPLACE FUNCTION countRecords ()
RETURNS integer AS $count$
declare
count integer;
BEGIN
SELECT count(*) into count FROM STUDENT;
RETURN count;
END;
$count$ LANGUAGE plpgsql;
五、执行存储过程
如果程序员需要在查询窗口执行存储过程,语法形式如下:select存储过程名(参数);
或者:select * from 存储过程名(参数);
例如: select countRecords ( );
或者:select * from countRecords ( );
五、执行存储过程(续)
如果程序员需要存储过程调用其它存储过程,语法形式如下:
select into 自定义变量from 存储过程名(参数);
CREATE OR REPLACE FUNCTION testExec()
returns integer AS $$
declare
rec integer;
BEGIN
select into rec countRecords();
//如果不关心countRecords()的返回值,则可用 PERFORM countRecords() 代替;
return rec;
END;
$$ LANGUAGE plpgsql;
六、删除存储过程
如果程序员需要删除存储过程,语法形式如下:
DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [ CASCADE | RESTRICT ]主要参数:
(1)IF EXISTS:如果指定的存储过程不存在,那么发出提示信息。

(2)name :现存的存储过程名称。

(3)argmode:参数的模式:IN(缺省), OUT, INOUT, VARIADIC。

请注意,实际并不注意OUT参数,因为判断存储过程的身份只需要输入参数。

(4)argname:参数的名字。

请注意,实际上并不注意参数的名字,因为判断函数的身份只需要输入参数的数据类型。

(5)argtype:如果有的话,是存储过程参数的类型。

(6)CASCADE:级联删除依赖于存储过程的对象(如触发器)。

(7)RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数;这个是缺省值。

六、删除存储过程(续)
例子:假如需要删除前面定义的存储过程testExec() DROP FUNCTION IF EXISTS testExec()
七、PL/SQL基本语法
1、声明局部变量。

变量声明的语法如下:
declare
变量名变量类型;
如果声明变量为记录类型,变量声明格式为: variable_name RECORD;
注:RECORD不是真正的数据类型,只是一个占位符。

例如:declare
count intger;
rec RECORD ;
2、条件语句
在PL/pgSQL中有以下三种形式的条件语句,与其他高级语言的条件语句意义相同。

1). IF-THEN
IF boolean-expression THEN statements
END IF;
2). IF-THEN-ELSE
IF boolean-expression THEN statements
ELSE 3). IF-THEN-ELSIF-ELSE
IF boolean-expression THEN
statements
ELSIF boolean-expression THEN
statements
ELSIF boolean-expression THEN
statements
ELSE
statements
END IF;
3、循环语句
1). LOOP 语句
LOOP
statements
END LOOP [ label ];
2). EXIT
EXIT [ label ] [ WHEN expression ];例如:LOOP
count=count+1;
EXIT WHEN count >100;
END LOOP;3). CONTINUE
CONTINUE [ label ] [ WHEN expression ];例如:LOOP
count=count+1;
EXIT WHEN count > 100;
CONTINUE WHEN count < 50;
count=count+1;
END LOOP;
3、循环语句
4). WHILE
WHILE expression LOOP
statements
END LOOP ;
例如:
WHILE amount_owed > 0 AND balance > 0 LOOP --do something
END LOOP;5). FOR
FOR name IN [ REVERSE ] expression ... expression LOOP
statements
END LOOP;
例如: FOR i IN 1...10 LOOP
RAISE NOTICE 'i IS %', i;
END LOOP;
FOR i IN REVERSE 10...1 LOOP
--do something
END LOOP;
4、遍历命令结果
FOR record_or_row IN query LOOP
statements
END LOOP ;
FOR循环可以遍历命令的结果并操作相应的数据,例如: declare
rec RECORD ;
FOR rec IN SELECT sid , sname FROM student LOOP raise notice ‘%-,%-’,rec.sid, rec.sname;
END LOOP;
1、使用存储过程的优点
(1) 减少网络通信量
(2) 执行速度更快
(3) 更强的适应性
(4) 降低了业务实现与应用程序的耦合
(5) 降低了开发的复杂性
(6) 保护数据库元信息
(7) 增强了数据库的安全性
2、使用存储过程的缺点
(1) SQL本身是一种结构化查询语言,而存储过程本质上是过程化的程序;面对复杂的业务逻辑,过程化处理逻辑相对比较复杂;而SQL语言的优势是面向数据查询而非业务逻辑的处理。

(2) 如果存储过程的参数或返回数据发生变化,一般需要修改存储过程的代码,同时还需要更新主程序调用存储过程的代码。

(3) 开发调试复杂,由于缺乏支持存储过程的集成开发环境,存储过程的开发调试要比一般程序困难。

(4) 可移植性差。

相关文档
最新文档