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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

因为昨天我的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语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
234 7
|
2月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
6天前
|
SQL 运维 安全
网络安全等级保护2.0 定级、评测、实施与运维-复习题目资料
本文详细总结了网络信息安全等级保护的练习题,包括单选题、多选题、判断题和简答题。供朋友们参考复习,学习相关领域知识参考。
|
7天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
23 2
|
1月前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
58 6
|
1月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。ACL 可应用于路由器、防火墙等设备,通过设定规则控制访问。其类型包括标准、扩展、基于时间和基于用户的ACL,广泛用于企业网络和互联网安全中,以增强安全性、实现精细管理和灵活调整。然而,ACL 也存在管理复杂和可能影响性能的局限性。未来,ACL 将趋向智能化和自动化,与其他安全技术结合,提供更全面的安全保障。
107 4
|
1月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
2月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
132 1
|
2月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
50 2
|
2月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
143 1