SQL Server存储过程多角度介绍

时间:2022-09-10 11:42:16

什么是存储过程:

存储过程(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存储过程多角度介绍的更多相关文章

  1. SQL Server存储过程用法介绍

    存储过程其实就是已预编译为可执行过程的一个或多个SQL语句. 通过调用和传递参数即可完成该存储过程的功能. 前面有介绍过存储过程的一些语法,但是没有详细示例,今天我们来一起研究一下存储过程. 提高性能 ...

  2. SQL Server存储过程中使用表值作为输入参数示例

    这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...

  3. SQL Server存储过程的删除方法

    SQL Server存储过程的删除方法使我们经常会用到的,下面就为您介绍扩展存储过程的删除方法,如果您对SQL Server存储过程方面感兴趣的话,不妨一看. --清除SQL Server所有的危险扩 ...

  4. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  5. SQL Server 存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  6. 14、SQL Server 存储过程

    SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...

  7. (摘录)SQL Server 存储过程

    文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...

  8. Sql Server 存储过程中查询数据无法使用 Union(All)

    原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...

  9. Yii2.0调用sql server存储过程并获取返回值

    1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...

随机推荐

  1. SpringMVC学习--校验

    简介 项目中,通常使用较多是前端的校验,比如页面中js校验.对于安全要求较高点建议在服务端进行校验. 服务端校验: 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conrolle ...

  2. Java 体系结构

    Java体系结构包括四个独立但相关的技术: 当编写并运行一个Java程序时,就同时体验了这四种技术.运行流程如下: Java虚拟机的主要任务是装载class文件并且执行其中的字节码.Java虚拟机包含 ...

  3. 效果类似于label从下往上滑(采用uiTableView实现)

    首先附上效果图 进行描述一下:效果就是类似于是一个竖直方向的滚动视图 并且方向是从下往上  并且能够一直这样循环下去. 代码“ // // ViewController.m // demo滚动视图上下 ...

  4. 1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组

    1.移动端的cookie不支持中文字符.可以用编码,解码的方式解决. 2.json字符串变成相应 的,json对象数组字符串.就这样 3.不同客户端(移动端.电脑)的请求,在C#服务端的取时间的格式竟 ...

  5. SQL Server 2012 - 数据表的操作

     unicode:双字节编码      variable:可变的    character:字符 T-SQL:  Transact Structured Query Language unique:唯 ...

  6. C++ 仿函数/函数指针/闭包lambda

    在上一篇文章中介绍了C++11新引入的lambda表达式(C++支持闭包的实现),现在我们看一下lambda的出现对于我们编程习惯的影响,毕竟,C++11历经10年磨砺,出140新feature,对于 ...

  7. SNMP学习——v3 VACM

    目录: ☆ SNMPv3视图访问控制模型    ☆ SNMPv3报文格式    ☆ VACM参数    ☆ Context Table    ☆ Security To Group Table     ...

  8. 引用全局变量global

    lang = Lang.chn def set_lang(lang_type): global lang lang = lang_type

  9. class字节码结构(四)(方法集合的结构)

    <Java虚拟机原理图解>1.5. class文件中的方法表集合--method方法在class文件中是怎样组织的 一个类有多个方法,所以方法肯定是一个集合. 目标是: 1,了解方法在字节 ...

  10. C&num;删除只读文件

    File.SetAttributes(fileRealPath, FileAttributes.Normal);//先将文件设置成普通属性 //...你的删除文件的代码