SqlServer——存储过程(未完工)
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——存储过程(未完工)的更多相关文章
- SQLSERVER存储过程基础
SQLSERVER存储过程基础 1.声明变量 DECLARE @F001 SMALLINT, (三元素,声明declare+变量名+类型) @F002 INTEGER, @F003 V ...
- 解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-sourc ...
- Sqlserver 存储过程中结合事务的代码
Sqlserver 存储过程中结合事务的代码 --方式一 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ ...
- SqlServer存储过程学习笔记(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
- SQLServer 存储过程嵌套事务处理
原文:SQLServer 存储过程嵌套事务处理 某个存储过程可能被单独调用,也可能由其他存储过程嵌套调用,则可能会发生嵌套事务的情形. 下面是一种解决存储过程嵌套调用的通用代码,在不能确定存储过程是否 ...
- 创建并在项目中调用SQLSERVER存储过程的简单示例
使用SQLSERVER存储过程可以很大的提高程序运行速度,简化编程维护难度,现已得到广泛应用.创建存储过程 和数据表一样,在使用之前需要创建存储过程,它的简明语法是: 引用: Create PROC ...
- SQLSERVER存储过程语法详解
CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...
- SqlServer存储过程详解
SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...
- sqlServer存储过程与sql语句的区别
sqlServer 存储过程与sql语句的区别 sql存储过程与sql语句的区别: 从以下几个方面考虑: 1.编写: 存储过程:编写比较难: sql语句:相对简单: 2.性能: 存储过程:高,可移 ...
- SqlServer存储过程(增删改查)
* IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值. CREATE PROCEDURE [dbo].[PR_NewsAffiche_AddNewsEntity] ( ...
随机推荐
- this和super用法
1. this能分清混淆,形参名与当前对象的某个成员有相同的名字,需要明确使用this关键字来指明你要使用某个成员,使用方法是“this.成员名”. 一般以this.形参数名=形参名,代表送进来赋值的 ...
- Java中初始变量默认值
Java语言中有8种基本数据类型,基本情况汇总如下: 序号 数据类型 大小/位 封装类 默认值 可表示数据范围 1 byte(位) 8 Byte 0 -128~127 2 short(短整数) 16 ...
- Windows下软件调试
1. 视频: (1).VS下的C++调试方法.wnv (2).WinDbg高级调试技术.wmv (3).内存与句柄泄漏处理技巧.wmv 2. “WinDbg高级调试技巧” 中 [01:22]讲到“软件 ...
- Asp.net WebAPI 使用流下载文件注意事项
public HttpResponseMessage Post(string version, string environment, string filetype) { var path = @& ...
- js装饰者模式
装饰者模式是为已有的功能动态地添加更多功能的一种方式.当系统需要新功能的时候,是向旧的类中添加新的代码.这些新加的代码通常装饰了原有类的核心职责或主要行为,在主类中加入了新的字段,新的方法和新的逻辑, ...
- review39
不可以在非同步方法中使用wait().notify()和notifyAll().
- XSS 跨站攻击
未整理完 介绍 XSS (Cross site Scripting),跨站脚本攻击,为了区分层叠样式表css,所以叫了XSS. 对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的"缓冲区溢 ...
- web测试中的测试点和测试方法总结
测试是一种思维,包括情感思维和智力思维,情感思维主要体现在一句俗语:思想决定行动上(要怀疑一切),智力思维主要体现在测试用例的设计上.具有了这样的思想,就会找出更多的bug. 一.输入框 1.字符 ...
- python递归中的return"陷阱"
在做一道练习题(参照下篇博文<在当前目录下递归的查找包含指定字符串的文件>)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下 问 ...
- Hibernate(2)
一.实体类编写规则 1.实体类里面的属性属于私有的 2.私有属性使用公开的set和get方法操作 3.要求实体类有属性作为唯一值(一般使用id值) 4.实体类属性建议不要使用基本数据类型,使用基本数据 ...