SQL Server存储过程多角度介绍
什么是存储过程:
存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数、输出参数、返回单个或多个结果集以及返回值。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
类似于C#中的类库,SQL Server 提供了一些预编译的存储过程,这些存储过程称为“系统存储过程”。
SQL Server中的存储过程的特征如下:
1>接收输入参数,并向调用过程或语句返回值。
2>包含在数据库中执行操作或调用其他存储过程的编程语句。
3>向调用过程返回状态值,指示执行过程是否成功(如果失败,还返回失败原因)
使用存储过程有下列优点:
1>允许模块化程序设计
只需创建一次存储过程并将其存储在数据库中,所以即可在程序中调用该过程任意次。
2>允许更快地执行
如果某操作需要大量的T-SQL代码或需要重复执行,存储过程将比T-SQL批处理代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程内存中的版本。但如果使用T-SQL批处理代码,每次运行T-SQL语句时,都要从客户端重复发送,并且在SQL-Server每次执行这些语句时,都要对其进行编译和优化。
3>减少网络流量
创建使用存储过程后,一个需要数百行T-SQL代码的操作,由一条执行该过程代码的单独语句就可实现,而不需要在网络中发送数百行代码
4>可作为安全机制使用
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限
存储过程分为以下两类:
1>系统存储过程
2>用户自定义存储过程
常用的系统存储过程:
sp_databases:列出服务器上的所有数据库
sp_helpdb:报告有关指定数据库或所有数据库的信息
sp_renamedb:更改数据库的名称
sp_tables:返回当前环境下可查询的对象的列表
sp_columns:返回某个表列的信息
sp_help:查看某个表的所有信息
sp_helpconstraint:查看某个表的约束
sp_helpindex:查看某个表的索引
sp_stored_procedures:列出当前环境中的所有存储过程
sp_password:添加或修改登录账户的密码
sp_helptext:显示默认值、未加密的存储过程、用户定义的存储过程、触发器或视图的实际文本
另外,还有一个常用的扩展存储过程:xp_cmdshell,它可以完成DOS命令下的一些操作,诸如创建文件夹、列出文件列表等。
http://www.cnblogs.com/roucheng/
用户定义的存储过程:
除了系统存储过程,用户还可以创建自己的存储过程,可使用Microsoft SQL Management Studio或使用T-SQL语句,使用Microsoft SQL Management Studio创建存储过程的步骤类似于视图,用于创建存储过程的T-SQL语句为CREATE PROCEDURE。所有的存储过程都创建在当前数据库中。
创建不带参数的存储过程:
使用T-SQL语句创建存储过程的语法如下:
CREATE PROC[EDURE] 存储过程名
AS
SQL语句
调用存储过程:
EXEC 存储过程名
创建带输入参数的的存储过程:
输入参数:可以在调用时向存储过程传递参数,此类参数可用来在存储过程中传入值。
带输入参数的存储过程T-SQL语句如下:
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 [ = 默认值 ],
……,
@参数n 数据类型 [ = 默认值 ]
AS
SQL语句
调用存储过程:
EXEC 存储过程名 参数1的值,……,参数n的值
或
EXEC 存储过程名 @参数1=值,……,@参数n=值
创建带输出参数的存储过程:
输出参数:如果希望返回值,则可以使用输出参数,输出参数后有“OUTPUT”标记,执行存储过程后,将把返回值存放在输出参数中,可供其他T-SQL语句读取访问。
带输出参数的存储过程T-SQL语法如下:
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 [ OUTPUT ],
……,
@参数n 数据类型 [ OUTPUT ]
AS
SQL语句
调用存储过程:
EXEC 存储过程名 变量名 OUTPUT
SQL Server存储过程多角度介绍的更多相关文章
- SQL Server存储过程用法介绍
存储过程其实就是已预编译为可执行过程的一个或多个SQL语句. 通过调用和传递参数即可完成该存储过程的功能. 前面有介绍过存储过程的一些语法,但是没有详细示例,今天我们来一起研究一下存储过程. 提高性能 ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
- SQL Server存储过程的删除方法
SQL Server存储过程的删除方法使我们经常会用到的,下面就为您介绍扩展存储过程的删除方法,如果您对SQL Server存储过程方面感兴趣的话,不妨一看. --清除SQL Server所有的危险扩 ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- 14、SQL Server 存储过程
SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...
- (摘录)SQL Server 存储过程
文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
随机推荐
- [ZigBee] 7、ZigBee之UART剖析(ONLY串口发送)
综述:USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式.两个USART具有同样的功能,可以设置在单独的I/O 引脚. 1.UART 模式 UART 模式 ...
- [ZigBee] 1、 ZigBee简介
前言 目前,中国大力推广的物联网是zigbee 应用的主战场,物联网通过智能感知.识别技术与普适计算(我还特意申请了个域名psjs.vip).泛在网络的融合应用,被称为继计算机.互联网之后世界信息产业 ...
- js模版引擎handlebars.js实用教程——由于if功力不足引出的Helper
返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...
- php json与xml序列化/反序列化
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...
- win7-VS2010-IIS网站的发布问题
前提:IIS配置已经完成 问题描述:我们在机房实验里,大家的都可以访问同学A发布的IIS网站,但是,A却不能访问我们每个人的网站,而我们也不能互相访问(除了A). 问题解决:忙乎了半天,原来A同学的防 ...
- osgi dm
看了http://developer.51cto.com/art/200909/154863.htm 真心感到,最强大最有组织的技术网站还是 51cto,牛人应该也是最多的. 以前逛51cto的比较少 ...
- 知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页
回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归 ...
- fir.im Weekly - 你与优秀源码之间只差一个 Star
说起开源社区,Github 是一个不可缺少的存在.作为全球最大的同性交友网站,上面有太多优秀的开源代码库和编程大神,让无数开发者心生向往.那么如何正确的使用 Github,也许是编程学习之必要.来看下 ...
- PHP实现RESTful风格的API实例(三)
接前一篇PHP实现RESTful风格的API实例(二) .htaccess :重写URL,使URL以 /restful/class/1 形式访问文件 Options +FollowSymlinks R ...
- 转载:Spring AOP (上)
工 作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大说过:“开发人员不可能一天到晚只有工作,肯定是需要自我学习.第一:为了更充实自己,保 持进步状态.第二:为了提升技术,提高开发能力.第三 ...