SQL菜鸟入门级教程之存储过程今天继续我们的SQL菜鸟教程,博客说了说触发器(),今天我们来说说存储过程。其实,触发器也属于存储过程,只不过它比较特殊。下面切入正题,让我带领众菜鸟们一起学习一下存储过程。存储过程简介 存储过程(Stored Procedure)

SQL菜鸟入门级教程之存储过程

今天继续我们的SQL菜鸟教程,博客说了说触发器(),今天我们来说说存储过程。其实,触发器也属于存储过程,只不过它比较特殊。下面切入正题,让我带领众菜鸟们一起学习一下存储过程。

存储过程简介

存储过程(Stored Procedure)是数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

在数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。

存储过程的分类

1系统存储过程

www.dedecms.com

以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。

2本地存储过程

用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,这跟各种语言里用户自己写的函数非常类似。我们一般所说的存储过程就是指本地存储过程。今天我们重点介绍本地存储过程,其他存储过程了解即可。

3临时存储过程

分为两种存储过程:

一是本地临时存储过程,以“#”开头,这样的存储过程就是存放在tempdb中的本地临时存储过程,且只有创建它的用户才能执行它;

二是全局临时存储过程,以“##”开头,这样的存储过程就是存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

4远程存储过程

在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。

5扩展存储过程

扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。

www.dedecms.com

创建存储过程的基本代码结构:

CREATE PROCEDURE Procedure_Name

--Procedure_Name为存储过程名(不能以阿拉伯数字开头),在一个数据库中触发器名是唯一的。名字的长度不能超过个字。PROCEDURE可以简写为PROC。

@Param1 Datatype,@Param2 Datatype

--@Param1和@Param2为存储过程的参数,Datatype为参数类型,多个参数用逗号隔开,最多允许个参数。

AS --存储过程要执行的操作

BEGIN

--BEGIN跟END组成一个代码块,可以写也可以不写,如果存储过程中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。

www.dedecms.com

END

GO --GO就代表结操作完毕

exec Procedure_Name [参数名] --调用存储过程Procedure_Name。

drop procedure Procedure_Name --删除存储过程Procedure_Name,不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

show procedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

show create procedure Procedure_Name --显示存储过程Procedure_Name的详细信息

www.dedecms.com

exec sp_helptext Procedure_Name --显示你这个Procedure_Name这个对象创建文本

优点

1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

3.存储过程可以重复使用,可减少数据库开发人员的工作量(复用性高,面向对象的编程思想)

4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权

缺点

1.调试麻烦,但是用 PL/SQL Developer 调试很方便!弥补这个缺点。

2.移植问题,数据库端代码当然是与数据库相关的。但是如果是做工程型项目,基本不存在移植问题。  www.dedecms.com

3.重新编译问题,因为后端代码是运行前编译的,如果带有引用关系的对象发生改变时,受影响的存储过程、包将需要重新编译(不过也可以设置成运行时刻自动编译)。

4.如果在一个程序系统中大量的使用存储过程,到程序交付使用的时候随着用户需求的增加会导致数据结构的变化,接着就是系统的相关问题了,最后如果用户想维护该系统可以说是很难很难、而且代价是空前的,维护起来更麻烦。

世间所有事物都有两面性,没有绝对好的东西,也没有绝对不好的东西。存储过程既有它的优点也有缺点,我们不能盲目的完全使用存储过程,也不能将其打入冷宫不去用。根据具体的项目,根据实际情况去决定如何使用存储过程,最重要的就是不要过度,平衡就好。

作者 刘水镜

oracle的存储过程菜鸟教程,SQL菜鸟入门级教程之存储过程相关推荐

  1. mysql带参数的sql_MySql存储过程是带参数的存储过程(动态执行SQL语句)

    下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式: call GetUsersDynam ...

  2. SQL 教程【菜鸟】

    SQL 教程[菜鸟] 转载于:https://my.oschina.net/u/3706644/blog/2395829

  3. UBUNTU教程之菜鸟飞飞

    本文转自 http://bbs.ouc.edu.cn/dispbbs.asp?boardid=29&id=47751&star=1 本人绝力推动ubuntu在校园的普及 今日推出ubu ...

  4. SQL菜鸟笔记之第一篇 实验环境的搭建及准备工作

    都快12点了,今天白天太忙了,但是什么理由都不能作为借口,所以我还是要坚持做笔记,今天的也还要有! 不知道小布老师为什么只做了8讲sqlplus的课程,接下来我继续学习sql的课程,继续做sql菜鸟笔 ...

  5. Oracle PL/SQL语言初级教程(自学)

    Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...

  6. python菜鸟教程h-python菜鸟教程,python好玩又简单的代码

    如果是零基础的话推荐你看以下几本书,入门来说都还不错:"笨办法"学Python(第3版)HeadFirstPython(中文版)父与子的编程之旅:与小卡特一起学Python pyt ...

  7. db2 删除存储过程_数据库教程-SQL Server存储过程使用及异常处理

    SQL Server存储过程 存储过程(Procedure)是数据库重要对象之一,也是数据库学习的重点之一.本文,我们以SQL Server为例对存储过程的概念.定义.调用.删除及存储过程调用异常等通 ...

  8. Oracle(四):PL/SQL、存储函数、存储过程、触发器

    一.PL/SQL (一)什么是 PL/SQL PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句( ...

  9. C#(Csharp)基础教程(上)(菜鸟教程笔记)

    博客已更新:C#(Csharp)基础教程(中)(菜鸟教程笔记) 内容包括:判断.循环.封装.方法.可空类型.数组.字符串.结构体.枚举. 目录 1. C# 及其开发环境简介 1.1 C# 概述 1.2 ...

  10. 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码

    使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码 Oracle数据库系统自带的PL/SQL对象(包,存储过程,函数等)的代码绝大部分都是使用了wrap程序加 ...

最新文章

  1. EOSIO 转帐详解
  2. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP
  3. 重磅 | 2018年清华大学研究生新生大数据
  4. Java单例模式:饿汉与懒汉区别
  5. 从创建数据库到备份恢复还原详解
  6. HDU 3966 Aragorn's Story (树链点权剖分,成段修改单点查询)
  7. 香港中文大学(深圳)张大鹏教授项目组招聘PhD
  8. mysql映射成hashmap_大厂面试必问!HashMap 怎样解决hash冲突?
  9. 转载 基于NicheStack协议栈的TCP/IP实现
  10. 凸优化第九章无约束优化 9.2 下降方法
  11. zebra 的Thread机制 -- 003
  12. SignalR主动通知订阅者示例
  13. egret白鹭引擎开发的两个H5小游戏源码分享
  14. 超市便利店批发行业企业仓库,使用盘点机PDA扫描商品条码高效盘点,库存管不准怎么办
  15. vep加密视频转换为mp4提取破解录屏教程
  16. 2022年信息安全工程师考试知识点:Web安全
  17. 实现微信公众号自定义分享功能,分享给朋友,分享到朋友圈,点击链接,获取点击分享者的openid。
  18. 无人机加入海上搜救;信息检索一站式开发包;JAX 实现的模块化强化学习库;动物园实际场景多视数据集;前沿论文 | ShowMeAI资讯日报
  19. APP云测试平台分享
  20. 微信小程序搭建怎么做?流程是怎么样?【小程序搭建】

热门文章

  1. 云计算机房防雷规范,弱电机房设计内容规范大全
  2. 三星android+l,高配原生安卓!移动定制版三星I9008L评测
  3. 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
  4. 协同oa办公系统在线演示下载地址
  5. 《模拟电子技术基础》课程笔记(七)——放大电路
  6. 6年后再一次Hello World!这本书让你久等了!
  7. MySQL数据库如何建立视图
  8. bt磁力种子与php文件,使用Python实现BT种子和磁力链接的相互转换
  9. k8s学习:kubeconfig文件详解
  10. 2021年上半年系统分析师下午真题和答案解析