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

本文涉及的产品
云数据库 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月前
|
存储 SQL Go
sqlserver存储过程
sqlserver存储过程
19 0
|
1月前
|
存储 SQL 数据库
sqlserver中常用的几个存储过程
sqlserver中常用的几个存储过程
48 0
|
2月前
|
机器学习/深度学习 分布式计算 资源调度
【社交网络分析】课程考试复盘 + 相关资料补充
【社交网络分析】课程考试复盘 + 相关资料补充
52 0
|
2月前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
4月前
|
网络协议
地址重叠时,用户如何通过NAT访问对端IP网络?
地址重叠时,用户如何通过NAT访问对端IP网络?
88 0
|
1天前
|
机器学习/深度学习 存储 计算机视觉
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现-4
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
28 11
|
6天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
5月前
|
安全 物联网 云栖大会
2023云栖大会 | 云网络技术Session主题资料和视频回放归档(已完结)
2023年10月31日,杭州,一年一度的云栖大会如期而至;阿里云飞天洛神云网络作为阿里云计算的连接底座,是飞天云操作系统的核心组件,致力于为上云企业提供高可靠、高性能、高弹性、智能的连接服务。本次云栖,云网络产品线也带来全系列产品升级,以及创新技术重磅解读,共包括1个Keynote,22个Session,包括产品发布、Deep Dive、最佳实践、客户分享、开放生态等多维度全面解读云网络进展。
1545 7
|
4月前
|
机器学习/深度学习 存储 算法
MATLAB神经网络拟合回归工具箱Neural Net Fitting的使用方法
MATLAB神经网络拟合回归工具箱Neural Net Fitting的使用方法