网络工作室暑假后第二次培训资料(SQLServer存储过程和ADO.NET访问存储过程)整理(一)

简介:

因为昨天我的SQL Server 2008数据库在使用的时候突然就打不开了。而起前天还用它来写T-SQL语句来着。所以很是郁闷啊,到网上查询以后,不能解决,就干脆重新安装了一边,所以昨天整理的内容不能够及时的更新到博客上,只能今天继续整理,然后更新了。

这次主要是讲ADO.NET访问存储过程的知识,所以,在开篇的时候还是把SQL Server存储过程的知识给串讲,复习一下。

对于前段程序开发人员来说,存储过程是很重要的工具,他可以使开发者在不了解表架构的情况下使用存储过程对数据进行处理。同时,由于存储过程具有封装的概念,当逻辑规则改变时,可以在不影响前端程序设计的情况下对后端程序进行修改。

存储过程包括视图的所有的优点,视图只有select命令,而存储过程则包含了几乎所有的T-Sql命令。
存储过程可以很大的提高T-SQl命令的执行效率。
T-Sql语句在SQl Server 客户端执行的过程:

每次执行时都需要分析语句正确与否,优化与编译成执行计划,再对照SQl Server中是否有相同的执行计划。


一般的T-SQl命令重复执行时,会一直执行同样的分析,最优化,编译的工作,将耗费大量的CPU时间。

而是用存储过程则是只进行一次分析,优化,编译的过程,之后就直接依照SqlServer缓存中的执行计划直接执行。

优点:减少网络带宽的占用:因为存储过程是在SqlServer端执行,不需要和前端进行来回的沟通,相比之下就减少了在网络上传递包的带宽占用量,对于网络程序执行来说,使用存储过程能够减少对网络带宽的占用。

SqlServer存储过程的声明方式:

Create  proc存储过程名称

As

T-sql命令

SqlServer存储过程分为无参数存储过程和有参数存储过程

1)没有参数的存储过程

调用存储过程

Exec  存储过程名称;

这样的用法和视图差不多,但是视图不可以使用order by命令。而存储过程没有这样的限制。

示例1-1代码如下:


 
  1. --创建不带参数的存储过程

  2. create proc select_activity

  3. as

  4. --该存储过程所执行的sql命令

  5. select * from T_Activity;

SQL调用该存储过程


 
  1. --调用select_activity存储过程

  2. exec select_activity


有参数的存储过程

主要有三种类型的参数:

1)输入参数2)输出参数3)返回值

输入参数即在调用这个存储过程之前必须输入参数而该参数仅在程序中使用,并不会再返回给用户

基本的声明方式:

Create proc  存储过程名称

@输入参数名称1  数据类型,

@输入参数名称2  数据类型

As

T-sql命令

如果存在多个参数,就需要在各个输入参数间以逗号分隔 。如果参数是字符串或者日期,则需要用单引号括起来,而数字则不用。

备注:

存储过程通常不要编写太长,因为存储过程是在数据库端执行的,太长的话会影响执行效率;

示例1-2代码如下


 
  1. --创建带参数的存储过程

  2. create proc select_activity1

  3. --修改存储过程的语句

  4. --alter proc select_activity1

  5. --声明参数,多个参数有“,”号分隔符隔开,参数后面声明该参数的数据类型

  6. @id int,

  7. @activityName nvarchar(50)

  8. as

  9. --该存储过程所执行的Sql命令

  10. select * from T_Activity where id=@id and activityName=@activityName;

  11. --调用带参数的存储过程

  12. --如果参数是字符串或者日期,则需要用单引号括起来,而数字则不用。

  13. exec select_activity1 5,'比武招亲'

  14. --或者

  15. exec select_activity1

  16. @id=1,

  17. @activityName='比武招新';



存储过程中可以包含一些简单的编程语句

比如:if ,begin  ·····end····等语句

示例1-3代码如下:



 
  1. --在设置参数时,如果需要给设置的参数赋值,则在声明的参数后面加“=”后面跟所设置的初始值,这里设置的初始值为空

  2. create proc sele_activity

  3. @id int=null,

  4. @activityInfoId int=null

  5. as

  6. --使用的if语句来判断输入的参数值是否为空,如果为空则返回前端错误信息“请输入参数”,而且使用return立刻结束该存储过程

  7. if @id isnullor @activityInfoId isnull

  8. begin

  9.        raiserror('请输入参数',16,1)

  10. return

  11. end

  12. --执行的sql命令

  13. select * from T_Activity where id=@id or activityInfoId=@activityInfoId;

  14. --使用了没有给参数赋值的存储过程,返回错误

  15. --错误信息:“消息 50000,级别 16,状态 1,过程 sele_activity,第 7 行 请输入参数”

  16. exec sele_activity;

  17. --这样调用返回正确的结果

  18. exec sele_activity

  19. @id=2,

  20. @activityInfoId=8;


输出参数的存储过程

输出参数和输入参数刚好相反,输入参数只会在as一下活动,而输出参数则返回前端使用

输出参数的声明过程:

Createproc存储过程名称

@输入参数名称   数据类型

@输出参数名称   数据类型  output

As

T-Sql命令

在声明输出参数变量时,必须声明为output,存储过程执行完成以后会将输出参数返回前端

示例1-4代码如下:



 
  1. --创建select_MathResult的存储过程

  2. create proc select_MathResult

  3. --声明输出参数@activityName和参数的类型

  4. @activityName nvarchar(50),

  5. --声明输出参数,并使用output来表明该参数为输出参数

  6. @result intoutput

  7. as

  8. --使用T-SQL语句来返回相同activityName的数据行数

  9. select @result=count(*) from T_Activity where activityName=@activityName

  10. --调用存储过程,调用时先声明接受输出参数的参数@answer和该参数的类型

  11. declare @answer int

  12. exec select_MathResult '比武招亲' ,@answer output

  13. select'结果是',@answer

这样就完成了对Sql Server存储过程的复习,在下一篇文章将要介绍怎样使用ADO.NET访问存储过程。文章地址:http://yisuowushinian.blog.51cto.com/4241271/1016527




     本文转自yisuowushinian 51CTO博客,原文链接:http://blog.51cto.com/yisuowushinian/1016524,如需转载请自行联系原作者




相关文章
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
428 1
|
11月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
836 11
|
机器学习/深度学习 编解码 计算机视觉
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
779 10
RT-DETR改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
|
机器学习/深度学习 编解码 计算机视觉
YOLOv11改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
YOLOv11改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
894 0
YOLOv11改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合
|
SQL 运维 安全
网络安全等级保护2.0 定级、评测、实施与运维-复习题目资料
本文详细总结了网络信息安全等级保护的练习题,包括单选题、多选题、判断题和简答题。供朋友们参考复习,学习相关领域知识参考。
|
运维 架构师 云栖大会
2024云栖大会 | 阿里云网络技术Session主题资料和视频回放归档
2024年9月19日-21日,杭州,一年一度的云栖大会如期而至;阿里云飞天洛神云网络作为阿里云计算的连接底座,是飞天云操作系统的核心组件,致力于为上云企业提供高可靠、高性能、高弹性、智能的连接服务。本次云栖,云网络产品线也带来全系列产品升级,以及创新技术重磅解读,围绕增强确定性、深度可观测、高效自动化和敏捷全球化带来技术、产品和服务升级,以及全新的生态伙伴合作构建。
1611 15
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
356 3
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
673 1

热门文章

最新文章