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

内,当作是数据库的对象之一,一般用户只要执行存储过程,并且提供存储过程所需的参
数就可以得到所要的结果而不必再去编辑 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. js原生 + jQuery实现页面滚动字幕

    js原生/jQuery实现页面滚动字幕效果 17:45:49 在新闻列表或者文章列表信息等页面中很容易要求实现字幕滚动的效果,以下为简单的实现页面中滚动字幕的效果 1.jQuery实现页面滚动字幕效果 ...

  2. iOS 三维变换

    1:平移 一个4*4的单位矩阵乘以一个P(x,y,z,1)的行向量,则表示此矩阵向x轴移动了x的单位,向Y轴移动了y个单位,向Z轴移动了z个单位,最后获得移动后的目标矩阵是 [ 1, 0, 0, 0  ...

  3. cql

    创建keyspace :CREATE KEYSPACE keyspace1 WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': ...

  4. javascript设计模式——Observer

    定义一种一对多的从属关系,当一个目标状态改变,所有他的从属对对象都将收到通知. 1.简单的Observer模式 实现 var Observer = function(){ this.list = [] ...

  5. zoj1025 Wooden Sticks

    DAG转移,从切题的数量来看是一道水题,给你n个棒,大的可以延续小的,问最少上升子序列的个数. 其实这道题是用贪心来写的,因为这是个有向无环图,到达分叉口,每一条路都要便历,所以每条路应该一样对待,有 ...

  6. VB.NET 初涉线程的定义和调用

    什么是线程 说话一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独 ...

  7. Boost.Python:使用继承

    An example #include <boost/python.hpp> #include <memory> #include <iostream> using ...

  8. 使用 Chrome 来调试你的 Android App

    http://www.stormzhang.com/android/2015/03/05/android-debug-use-chrome/ 个人一直对Chrome情有独钟,Chrome除了更快之外, ...

  9. 重新理解一遍UpdatePanel

    楼主只是想每天写点东西这样帮助自己的一个累积吧. 说明:楼主现在已经清楚了AJAX是怎么回事了,现在由于工作原因又摆弄起了UpdatePanel所以从AJAX的角度来分析一下UpdatePanel的使 ...

  10. linux命令——scp

    scp linux系统之间基于ssh登录的安全copy文件或者目录.本地[local]—— 远程[remote]{文件} scp local_file remote_username@remote_i ...