SQL Server存储过程

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


存储过程相关概念

在数据表查询操作过程中,尤其数据关系较为复杂情况下,查询需要通过多表连接查询实现,所需编写的代码较为复杂。对于需要频繁使用的复杂查询语句,如果每次都需要开发者编写语句实现查询功能,其效率较为低下、时间成本较高、工作量也相对较高。复杂查询示例如下:

复杂查询语句

针对这些情况我们提出了存储过程的概念,通过存储过程将频繁使用的复杂查询功能封装到存储过程中。所谓封装即指存储过程的定义,一旦定义好之后就可以通过调用存储过程实现复杂查询语句的使用。存储过程的定义基本语法描述如下:

存储过程定义语法

存储过程定义语发描述如上图所示,定义好存储过程之后可直接通过exec调用存储过程,即可返回查询结果。如果不需要使用该存储过程则可以使用Drop语句删除存储过程,调用即删除语法如下:

存储过程调用与删除语法

存储过程实例分析

在明确存储过程基本概念之后,我们将进一步通过实例对存储过程的定义与使用进行说明。实例为《数据库教程-SQL Server查询结果列转行实现与分析》文中所提供的数据查询需求为基础,将其复杂查询语句使用存储过程进行封装。数据表描述如下:

数据表

数据表如上所示,查询要求为按照项目编号sid统计裁判人数与裁判省份。并在此基础上实现按照项目编号对查询结果进行筛选。其统计结果如下样式显示:

统计结果

有之前基础,我们可以快速编写出实现该功能的查询语句,结合本章所讲的存储过程概念,我们可以编写符合要求的存储过程。存储过程编写代码如下所示:

存储过程代码

本例提供了带参数的存储过程,通过提供参数可直接获取制定编号的统计信息,实现测试代码及结果如下:

存储过程调用及结果显示

存储过程异常处理

与程序设计语言类似,SQL Server也提供了完整的异常处理机制,因此我们可以直接在存储过程中使用try...catch语句实现异常的捕捉及异常信息的显示等。SQL Server中存储过程异常处理语法描述如下:

异常处理存储过程语法

存储过程异常处理基本语法描述如上图所示,结合本例题,我们可以修改存储过程代码,实现对异常事件进行捕捉,并显示异常信息详情。修改代码描述如下图:

带异常处理的存储过程

如上图我们对之前写的存储过程进行了进一步的修改,通过try catch语句可以捕捉存储过程在执行过程中所出现的异常问题。调用该存储过程代码方法及测试如下:

调用存储过程


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!相关文章链接如下:

数据库教程-SQL Server多条件模糊查询

数据库教程-SQL Server查询结果列转行实现与分析

数据库教程-SQL Server数据字典查询及导出

db2 删除存储过程_数据库教程-SQL Server存储过程使用及异常处理相关推荐

  1. db2 删除索引_数据库三种删除方式

    第一种 使用delete 语句 特点: delete 属于数据库操纵语言DML,表示删除表中的数据, 删除过程是每次从表中删除一行,并把该行删除操作作为事务记录在日志中保存 可以配合事件(transa ...

  2. sql 数据库检查_数据库检查点– SQL Server 2016中的增强功能

    sql 数据库检查 When a new row is inserted or an existing one is updated in your database, the SQL Server ...

  3. mssql和mysql的存储过程区别_MySQL和SQL Server存储过程写法上有什么区别?

    展开全部 一.多数指令是相同的,包括创建和修正存储过32313133353236313431303231363533e59b9ee7ad9431333365646262程的指令. 二.很多细微的指令有 ...

  4. mysql数据库中怎么删除一行_数据库教程_mysql如何删除表中一行数据?- 中国it教程网...

    mysql中使用DELETE语句删除表中一行数据,语句为"DELETE FROM 表名称 WHERE 列名称 = 值".删除所有行的语句为"DELETE FROM tab ...

  5. 数据库入门教程(SQL Server 2005)----数据库是如何查询数据的

    数据库入门教程(SQL Server 2005)----数据库是如何查询数据的----查询:逻辑顺序 1.计算列 //以scott数据库中的emp表为例-----where可译为查找,其本质是在进行表 ...

  6. mysql2005备份_创建完整数据库备份 - SQL Server | Microsoft Docs

    完整数据库备份Create a Full Database Backup 09/12/2019 本文内容 适用于:Applies to: SQL ServerSQL Server(所有支持的版本)SQ ...

  7. SQL Server存储过程里全库查找引用的数据库对象(表、存储过程等)

    SQL Server存储过程全库匹配数据库对象(表.存储过程等) 简介 可以通过自定义存储过程sp_eachdb来遍历每个数据库然后结合sys.objects 关联sys.sql_modules后的d ...

  8. 数据库服务器(SQL SERVER)的安全设置

    数据库服务器(SQL SERVER)的安全设置 一.开发注点意 1.写好代码,运行拼接式的SQL语句要打醒12分精神,尽量用存储过程,或者是参数式的SQL语句,比如  [csharp] string ...

  9. Microsoft SQL Server 存储过程

    Microsoft SQL Server 存储过程 TRIGGER DDL触发器:主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改:DDL事件是指对数据库CREATE,ALTER,DROP ...

最新文章

  1. UniApp H5 浏览器下载图片 兼容iOS、Android
  2. SAP PM模块实施难点与重点
  3. 建立asp.net应用程序提示:无法与服务器建立连接
  4. 泛函编程—模板函数_类模板
  5. MATLAB 图像处理函数(第六章)(获取图像矩形像素的运用)
  6. Linux文件系统目录
  7. /usr/include/sys/types.h基本系统数据类型
  8. ai怎么调界面大小_Illustrator怎么设置调整界面网格呢?
  9. 为啥查询那么慢?看完你就明白了!
  10. ORB_SLAM3_一张图说明ORB-SLAM中的ORB特征提取和图像匹配算法流程
  11. 利用集合类排序JAVA_Java使用Collections工具类对List集合进行排序
  12. java8 新特性实践
  13. XMind--思维导图
  14. 机器学习笔记(17)使用XGBoost完成高维数据的分类任务
  15. 农夫安全-安全网站导航 farmsec
  16. 计算机一级中的高级筛选怎么做,详解Excel的高级筛选
  17. 博途v15模拟量转换_浅谈西门子S7-1200PLC的模拟量转换,附实例演示
  18. 【转载】Android 第三方ROM定制之适配谷歌Play Store
  19. android Settings之辅助功能
  20. geoserver发布切片影像地图

热门文章

  1. Qt VS Tools用不了解决方法
  2. Android ListView下拉刷新、上拉载入更多
  3. SVN使用和解决方案
  4. 王小云计算机,王小云学者主页-科技工作者之家
  5. 微信小程序入门(一)
  6. 数学沉思录:古今数学思想的发展与演变 (Mario Livio 著)
  7. 绘制二次三次曲线多次曲线
  8. 部署App-V Client,应用程序虚拟化体验系列之三
  9. Docker上安装jenkins让持续集成飞
  10. Android SDK Manager 更新慢解决办法