创建于2016-12-24 16:12:19


存储过程

    概念:

       1.存储过程是在数据库管理系统中保存的、预先编译的、能实现某种功能的SQL程序,它是数据库应用中运用比较广泛的

        一种数据对象。

       2.存储过程是SQL语句和控制语句的预编译集合,保存在数据库里可由应用程序调用执行,而且允许用户声明变量、逻辑

          控制语句及其他强大的编程功能。

       3.存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数、输出参数、返回单个或多个结果集及返回值。

       4.存储过程可以只包含一条select语句,也可以包含一系列使用控制流的SQL语句。存储过程可以包含个别或全部的控制

        流语句。

    特点:

       1.模块化程序设计:

          只需创建一次存储过程并将其存储在数据库中,以后即可在程序中反复调用该存储过程。

       2.执行速度快,效率高:

          如果某操作需要大量的T-SQL代码或需要重复执行,则存储过程将比T-SQL批处理代码的执行速度更快。因为存储

          过程只在创建的时候编译一次,而批处理代码每次执行的时候都需要编译。

       3.减少网络流量:

          使用存储过程后,一个需要数百行T-SQL代码的操作,由一条执行过程代码的单独语句即可实现,而不需要再网络

          中发送数百行代码。

       4.具有良好的安全性:

          即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。不同的用户使用不同

          的存储过程。

       5.存储过程分为两类:

          系统存储过程用户自定义的存储过程

系统存储过程

    概括:SQL Server提供系统存储过程,它们是一组预编译的T-SQL语句。系统存储过程提供了管理数据库和更新表的机制,并

       充当从系统表中检索信息的快捷方式。

    常用的系统存储过程:

       SQL Server的系统存储过程的名称以“sp_”开头,并存放在Resource数据库中。下面列出一些常用的系统存储过程↓

常用的系统存储过程 
系统存储过程  说明
sp_databases  列出服务器上的所有数据库信息,包括数据库名称和数据库大小
sp_ helpdb 报告有关指定数据库或所有数据库的信息 
sp_renamedb  更改数据库的名称 
sp_ tables 返回当前环境下可查询的表或视图的信息 
sp_ columns 返回某个表或视图的列信息,包括列的数据类型和长度等 
sp_help  查看某个数据库对象的信息,如列名、主键、约束、外键、索引等 
sp_helpconstraint  查看某个表的约束 
sp_helpindex  查看某个表的索引 
sp_stored_procedures  显示存储过程的列表 
sp_password  添加或修改登录账户的密码 
sp_helptext  显示默认值、未加密的存储过程、用户定义的存储过程、 触发器和视图的实际文本

    

    

    

    调用执行存储过程:

       语法:    exec[ute]  [返回变量=]  存储过程名

                      [@参数1=]参数值1  [output]  |  [default],

                      ......,

                        [@参数n=]参数值n  [output]  |  [default]

       其中,exec是execute的简写

       如果执行存储过程的语句时批处理中的第一个语句,则可以省略execute关键字。

       如果有返回值的话,可以用一个变量接收。但是在存储过程内return只能返回数值类型

       output表明参数是输出参数,default表示参数的默认值。

       如果不按照参数顺序传递参数值,则要指定参数名。

       一旦某个参数按照"@参数名=参数值"格式传递数据,那么该参数之后的其他参数都必须以同样的格式传递参数

       值。

    常用的扩展存储过程:

       扩展存储过程是SQL Server提供的各类系统存储过程中的一类,允许使用其他编程语言创建外部存储过程,为数据库用

       户提供从SQL Server实例到外部程序的接口,以便进行各种维护活动。通常以"xp_"作为前缀,以DLL形式单独存在。

       语法:    exec  xp_cmdshell  DOS命令  [no_output]

              其中,exec表示调用存储过程,no_output为可选参数,设置执行DOS命令后是否输出返回信息。

用户自定义的存储过程

    组成:

       1.输入参数和输出参数。

       2.在存储过程中执行的T-SQL语句。

        3.存储过程的返回值。

    语法:

       1.创建语法:

             create  proc[edure]  存储过程名

                [{@参数1  数据类型}  [=默认值]  [output],

                ......,

                 {@参数n  数据类型}  [=默认值]  [output]

                ]

             as

                SQL语句

       2.删除语法:

             drop  proc[edure]  存储过程名

       3.判断存储过程是否存在,如果存在,则删除

             if  exists(select  *  from sysobjects where name = 存储过程名)

                drop  proc[edure]  存储过程名

             go

    语法释义:

       1.创建:

             proc是procedure的简写,参数的默认值可选,不写则没有默认值,调用执行时必须带有此参数。output

             表示是输出参数,即执行存储过程后把返回值存放在输出参数中。就像C#中的引用传递一样。输出参数也

             可以设置默认值。不写output则为输入参数,就像C#中的值传递一样。

             另外需注意,存储过程中参数的默认值不能是系统函数。比如参数是时间类型,默认值不能是

             GETDATE()

处理错误信息

    概念:在存储过程中,可以使用print语句显式用户定义的错误信息,但这些是临时的,并不保存错误信息。使用raiserror语句

       可以指定严重级别并设置系统变量记录所发生的错误。

    raiserror语句:

       语法:

             raiserror  ({msg_id  |  msg_str}  {,  severity,  state}  [with  option [...n]])

       语法释义:

             msg_id:  在sysmessages系统表中指定的用户定义错误信息。

             msg_str:  用户定义的特定信息,最长为255个字符。

             severity:   与特定信息关联,表示用户定义的严重性级别。用户可使用的级别为0~18级;19~25级是

                     为sysadmin固定角色的成员预留的,并且需要指定with  log选项;20~25级被认为是致命

                     错误。

             state:   表示错误的状态,是1~255中的值。

             option:   错误的自定义选项,可以是下列任一值

                     a. log:    在Microsoft SQL Server数据库引擎实例的错误日志和应用程序日志中记

                            录错误。

                     b. nowait:  将消息立即发送给客户端。

                     c. seterror:  将@@error值和error_nummber值设置为msg_id或50000,不用考虑

                            严重级别。

SQL Server存储过程的更多相关文章

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

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

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

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

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

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

  4. 14、SQL Server 存储过程

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

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

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

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

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

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

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

  8. C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try

    C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...

  9. sql server 存储过程使用游标记录

    sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...

  10. SQL Server存储过程输入参数使用表值

    转载自:http://blog.csdn.net/smithliu328/article/details/9996149 在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使 ...

随机推荐

  1. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  3. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

  4. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  5. javaScript生成二维码(支持中文,生成logo)

    资料搜索 选择star最多的两个 第一个就是用的比较多的jquery.qrcode.js(但不支持中文,不能带logo)啦,第二个支持ie6+,支持中文,根据第二个源代码,使得,jquery.qrco ...

  6. 【SAP业务模式】之ICS(五):定价配置

    本篇博文讲述ICS业务中的定价配置. 1.定义销售订单类型 目录:SPRO-销售与分销-销售-销售凭证-销售凭证抬头-定义销售凭证类型 事务代码:VOV8 2.定义销售订单类型 目录:SPRO-销售与 ...

  7. [原创]ubuntu16.04LTS使用细节

    如何给自己安装的应用创建桌面图标 拿php开发神器phpstorm为例,找到可执行文件所在路径. 这里是/home/haive/PhpStorm/bin/phpstorm.sh 打开dash,搜索&q ...

  8. 第12章 Linux系统管理

    1. 进程管理 1.1 进程查看 (1)进程简介 进程是正在执行的一个程序或命令(如ls命令也是一个进程),每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的作用 ...

  9. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  10. 【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析

    目录 说明 使用Fiddler分析android版API 部分效果图 关于源码 说明 在做博客园UWP版的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下An ...