存储过程最主要的特色:是当写完一个存储过程后即被翻译成可执行码存储在系统表

内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参
数就可以得到所要的结果而不必再去编辑 T-SQL 命令。
存储过程也可用在控制访问权限、为数据库表中的活动创建审计追踪、将关系到数据
库及其所有相关应用程序的数据定义语句和数据操作语句分隔开。

1.存储过程定义:
存储过程是一种在数据库中存储复杂程序,以便在外部程序调用的一种数据库对象,它可以视为数据库中的一种函数或子程序;
存储过程经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它。存储过程相比传统SQL语句执行方式(先编译,再执行)明显效率高。为了保证数据的完整性,提高执行重复任务的性能和一致性,常采
用存储过程(Stored Procedure)。

2.存储过程的优点:
.减少了服务器/客户端网络流量
.更强的安全性
.代码的复用性
.更容易维护
3.存储过程的类型:

1、系统存储过程:以“sp_”为前缀标识,存储在“master”数据库中,提供对系统表的检索和管理功能。
2、扩展存储过程:以“xp_”为前缀标识,通过执行外部DLL来实现功能。
3、用户定义存储过程:创建在用户数据库中。
4. 临时存储过程:本地临时过程的名称以单个数字符号 (#) 开头;它们仅对当前的用户连接是可见的;它们仅对当前的用户连接是可见的;
当用户关闭连接时被删除。全局临时过程的名称以两个数字符号 (##)开头,创建后对任何用户都是可见的,并且在使用该过程的最后一个会话结束时被删除。

二.

常用系统存储过程有:
exec sp_databases; --查看数据库
exec sp_tables; --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;
存储过程基本语法:
--------------创建存储过程-----------------

CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ] [ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] --------------调用存储过程----------------- EXECUTE Procedure_name '' --存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value --------------删除存储过程----------------- drop procedure procedure_name --在存储过程中能调用另外一个存储过程,而不能删除另外一个存储过程
1,参数分为输入参数,输出参数;参数都是可选的,输入参数允许默认值。
示例:
一个简单的存储过程:
CREATE PROCEDURE COURSEINFO
@Cno varchar(20),
@Cname varchar(20) AS
BEGIN
select * from COURSE where CNO=@Cno and CNAME=@Cname
END
GO

如果用sql直接查询,是这样的:

select * from COURSE where CNAME='计算机导论'

查询结果:

用存储过程查询,则是这样的:

exec COURSEINFO 计算机导论,计算机导论
 

或这样:

EXEC COURSEINFO @Cno='3-105',@Cname='计算机导论'

查询结果:


参考资料:

SQL存储过程入门http://www.cnblogs.com/lideng/archive/2013/04/11/3013966.html

SQL Server存储过程http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

存储过程与触发器 :http://read.pudn.com/downloads152/ebook/661195/ch09.pdf

在 ADO.NET 中使用存储过程http://116.252.173.100:16000/dotnetweb/dotnetjpkchtml/jxnr/asp/10.pdf

实现存储过程http://read.pudn.com/downloads115/ebook/485961/229/%E7%AC%AC%E5%85%AB%E7%AB%A0%20%E5%AE%9E%E7%8E%B0%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B.pdf

SqlServer之存储过程的更多相关文章

  1. Sqlserver中存储过程,触发器,自定义函数(二)

    Sqlserver中存储过程,触发器,自定义函数: 自定义函数:1.函数类型:2.函数的参数和返回值: 1.函数类型:标量值函数,返回的是一个标量值表值函数:内联表值函数:多语句表值函数. 标量值函数 ...

  2. Sqlserver中存储过程,触发器,自定义函数(一)

    Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. ...

  3. Sqlserver中存储过程,触发器,自定义函数

    Sqlserver中存储过程,触发器,自定义函数: 1. 触发器:是针对数据库表或数据库的特殊存储过程,在某些行为发生的时候就会被激活 触发器的分类: DML触发器:发生在数据操作语言执行时触发执行的 ...

  4. JSON序列化及利用SqlServer系统存储过程sp_send_dbmail发送邮件(一)

    JSON序列化 http://www.cnblogs.com/yubaolee/p/json_serialize.html 利用SqlServer系统存储过程sp_send_dbmail发送邮件(一) ...

  5. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  6. SqlServer复杂存储过程

    SqlServer复杂存储过程 CREATE PROCEDURE FETCH_GOOUT_INFO AS BEGIN WITH l as(SELECT A.ZJHM, O.KSQR, O.JSRQ, ...

  7. SQLServer 的存储过程与java交互

    一.   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量.条件执行和其他强大的编程 ...

  8. SqlServer中存储过程 returnC#代码处理以及对应的MySQL如何改写

    一.SqlServer 中 1. 创建表 create table testuser( id int, --primary key, names ), address ), paw ) ) 2.创建存 ...

  9. SQLServer 中存储过程

    SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)存储过程有三种返回:   1.   用return返回数字型数据   2.   用返回参数 ...

  10. asp.net+Sqlserver 通过存储过程读取数据

    Sqlserver代码  创建存储过程如下: /*根据父id获取类别总数*/ IF EXISTS (SELECT name FROM sysobjects WHERE name = N'getsite ...

随机推荐

  1. SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    其他信息: V5.7.4.4 Can't find the System.Data.SQLite.dll more info : 混合模式程序集是针对"v2.0.50727"版的运 ...

  2. 深入浅出CChart 每日一课——第十六课 实习之旅,百年老店之新锐WTL

    上节课笨笨给大家介绍了CChart在微软MFC框架下的应用,本节课的内容仍然和百年老店微软相关,只不过主角换成WTL了. 不了解WTL的同学可以先找度娘温习一下.度娘在怀,今生何求.郎君啊,你是不是闷 ...

  3. MVC模式下My97DatePicker日期控件引用注意事项

    My97DatePicker日期控件之前在用webform模式开发的时候,只要 <script language="javascript" type="text/j ...

  4. mvc3.0防止跨站点请求伪造(CSRF)攻击

    众所周知,asp.net mvc程序在浏览器运行是产生标准的Html标签,包括浏览器要发送的关键数据等内容都在html内容里面.听起来不错,但是假如我们伪造类似的html内容,更改里面的关键数据,在浏 ...

  5. Codeforces 482B Interesting Array(线段树)

    题目链接:Codeforces 482B Interesting Array 题目大意:给定一个长度为N的数组,如今有M个限制,每一个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是 ...

  6. asp.net 树形控件 $.fn.zTree.init

    在网页中通过jquery脚本来构筑树形控件将是一个不错的选择,比如有一个文本框,当鼠标点击的时候,像弹出一个下拉框一样弹出一个树形控件,这似乎是一个不错的控制.下面主要讲讲这种树形控件的实现.为了能使 ...

  7. HTML6注册表单输入日志标题

    一.找到元素. var d = document.getElementById("") var d = document.getElementsByName("" ...

  8. jvm如何知道那些对象需要回收

    1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前有两种算法 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0 ...

  9. 安装MYSQL出现的问题

    安装MYSQL接近三天了还是没有安装好,原因1:我觉得错误日志产生的原因是因为 计算机的名称是中文名 :小石头 瓦卡卡,果然是这个原因,折腾了三四天,最后换了系统!!!!把计算机名命名成了英文,果然一 ...

  10. jQuery 动态绑定的点击事件

    $(function () { , $_div = $('#test'); $('input[name=addbtn]').on('click', function () { $_div.append ...