http://www.cnblogs.com/blsong/archive/2009/11/30/1613534.html

  http://blog.csdn.net/lenotang/article/details/3329593

  http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html

  存储过程是事先编好的、存储在数据库中的程序,这些程序用来完成对数据库的指定操作。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。  

  SQL Server本身提供了一些存储过程,用于管理SQL Server和显示有关数据库和用户的信息,我们称之为系统存储过程用户也可以编写自己的存储过程,并把它存放在数据库中。这样安排的主要目的就是要充分发挥数据库服务器的功能,尽量减少网络上的堵塞。

优点:存储过程重用已缓存的的执行计划,节省了分析、解析和优化代码所需的CPU资源和时间,降低了网络流量。

架构:SqlServer按照以下顺序解析:当前数据库的sys架构;调用方的默认架构;当前数据库的dbo架构。

格式:

create proc | procedure pro_name
[
   {@参数数据类型} [=默认值] [out|output],

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

....
]  
as
SQL_statements

 用法:

  通过以下例子来说明存储过程的用法,先创建如下表并插入数据:

create table student_cj(  name varchar(20) not null ,  km varchar(10) not null ,  cj int not null)
insert into student_cj values('小明','数学',100),('小明','语文',100),('小李','语文',100),('小虎','语文',100),('小强','语文',100),('小龙','语文',100),('小李','数学',100),('小虎','数学',100),('小强','数学',100),('小龙','数学',100)

  一、无参数存储过程

  1、创建存储过程如下:

create proc inquiry1
as
select name,km ,cj from student_cj

  2、执行

exec inquiry1

如图:

二、有参数存储过程
  1、创建存储过程

create proc inquiry2
@km varchar(10)='语文'  --参数默认为 '语文'
as
  select name,km ,cj from student_cj where km =@km

2、执行存储过程

当执行 exec inquiry2

如图:

当执行 exec inquiry2 @km='数学'

如图:

  三、带输出参数的存储过程

    1、创建存储过程

create proc inquiry3
@km varchar(10)='数学',@cj int out  --@cj为输出类型参数
as
  begin
    select name,km ,cj from student_cj where km =@km
    select @cj= avg(cj) from student_cj where km =@km   --给@cj参数赋值
  end

2、执行存储过程
  declare @cj1 int  --执行存储过程前要声明输出类型参数(实参),其参数名可以与 形参 相同
  exec inquiry3 default, @cj1 out   --default表示第一个参数@km适用默认值 '数学'
  select @cj1 as '平均分'

    结果如下:

      



SqlServer——存储过程(未完工)的更多相关文章

  1. SQLSERVER存储过程基础

    SQLSERVER存储过程基础 1.声明变量 DECLARE     @F001  SMALLINT,  (三元素,声明declare+变量名+类型) @F002  INTEGER, @F003  V ...

  2. 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)

    解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...

  3. Sqlserver 存储过程中结合事务的代码

    Sqlserver 存储过程中结合事务的代码  --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ ...

  4. SqlServer存储过程学习笔记(增删改查)

    * IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...

  5. SQLServer 存储过程嵌套事务处理

    原文:SQLServer 存储过程嵌套事务处理 某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形. 下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否 ...

  6. 创建并在项目中调用SQLSERVER存储过程的简单示例

    使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...

  7. SQLSERVER存储过程语法详解

    CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...

  8. SqlServer存储过程详解

    SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...

  9. sqlServer存储过程与sql语句的区别

    sqlServer   存储过程与sql语句的区别 sql存储过程与sql语句的区别: 从以下几个方面考虑: 1.编写: 存储过程:编写比较难: sql语句:相对简单: 2.性能: 存储过程:高,可移 ...

  10. SqlServer存储过程(增删改查)

    * IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...

随机推荐

  1. Can't connect to MySQL server on 'localhost' (10061)的解决办法!

    Can't connect to MySQL server on 'localhost' (10061)的解决办法! http://blog.sina.com.cn/s/blog_52ebca1f01 ...

  2. codeforces675D Tree Construction

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  3. Spring的DI初步

    DI:依赖注入 第一个DEMO:域属性注入 java类:(Car类和Stu类,学生有一辆小汽车) package cn.dawn.day02di; /** * Created by Dawn on 2 ...

  4. ACE主动对象模式

    ACE主动对象模式 ACE主动对象模式解决的核心问题是,异步调用及线程context的切换.ACE主动对象的实现侧重于类代码段的并发访问,这种访问模式仅适合短小的处理流程,比如socket的accep ...

  5. 自己动手实现一个简化版的requireJs

    一直想实现一个简单版本的requireJs,最直接的办法去看requireJs源码搞明白原理,但是能力有限requireJs的源码比想象的要复杂许多,看了几遍也不是很明白,最后通过搜索找到了一些有价值 ...

  6. 爬虫第四篇:html解析之xpath

    在上面的三篇中我们html的解析都是用了正则表达式进行匹配.下面我们主要说一下一个使用起来很简单的模块xpath进行匹配解析html文本. Chrome上有一款插件:XPath Helper,直接在浏 ...

  7. R语言入门基础

    教程:常用运算函数.对一般数据进行运算的常用函数: 1.round() #四舍五入 例:x <- c(3.1416, 15.377, 269.7) round(x, 0) #保留整数位 roun ...

  8. 一些神奇的(优化)板子——来自Loi_black的博客

    deque<int>q; void spfa(int s) { ;i<=n;i++) d[i]=1e9; d[s]=; q.push_back(s); used[s]=; while ...

  9. poj-1426-Find The Multiple(打表水过)

    思路: 2的最近可以整除的数是10 所以,很关键的一点,只要是偶数,例如: 6:2*3,可以拆分为能够被2整除和能够被3整除的乘积,所以,10*111=1110 144:72*2,8*9*2,2*2* ...

  10. 高可用-软件heartbeat的入门介绍

    注:参考互联网整理. 一.简介Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...