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] ( ...
随机推荐
- WinDBG__独立安装文件
debugging tools for windows 1. 来自于网页:http://rxwen.blogspot.hk/2010/04/standalone-windbg-v6120002633. ...
- (转) Nova是如何统计OpenStack资源
引言 运维的同事常常遇到这么四个问题: Nova 如何统计 OpenStack 计算资源? 为什么 free_ram_mb, free_disk_gb 有时会是负数? 即使 free_ram_mb, ...
- hdu5692 dfs序线段树
这是补的知识点,按先序遍历的顺序建立dfs序,用左右两个值代表整个区间,因为dfs序最重要的特点就是子树的区间是连续的 建立线段树时,需要用重新标过的 下标来建立 #pragma comment(li ...
- keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法
网址:https://s3.amazonaws.com/img-datasets/mnist.npz,由于显而易见的原因,无法访问. npz实际上是numpy提供的数组存储方式,简单的可看做是一系列n ...
- JS内存知识点汇总
废话片: 讲到内存可以联想到很多,内存分配管理,内存回收机制,内存泄露等等,今天我们就来答题的总结一下. 正文片: 1.内存分配管理 2.内存回收机制 3.内存泄露 一.内存分配管理 首先让我们看看内 ...
- spring学习-4
bean的作用域 使用bean的scope属性来配置bean的作用域 scope="singleton":默认是单例模式即容器初始化创建bean实例,在整个容器的生命周期内只创建这 ...
- golang实现模拟键盘按键
公司前段时间要我写个小项目需要可以局域网内一个ipad控制另一台pc上的键盘输入,github上找了找,居然有个robotgo库这么神级的存在,感觉go的库真是越来越多了,虽然大部分都是第三方的.ht ...
- linux下的制作静态库并使用它
静态库所要用的源文件 文件 fred.c #include <stdio.h> void fred(int argc) { printf("void fred(i ...
- 《Javascript高级程序设计》阅读记录(二):第四章
这个系列之前文字地址:http://www.cnblogs.com/qixinbo/p/6984374.html 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较 ...
- COGS1516. 棋盘上的车
[题目描述] 在n*n(n≤20)的方格棋盘上放置n 个车,求使它们不能互相攻击的方案总数. [输入格式] 一行一个正整数n. [输出格式] 一行一个正整数,即方案总数. [样例输入] 3 [样例输出 ...