SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000系列操作系统一统天下的局面,在微软的操作系统上,没有任何一种数据库系统能与之抗衡,包括数据库领域中的领头羊甲骨文公司的看家数据库Oracle在内。不可否认,SQL Server最大的缺陷就是只能运行在微软自己的操作系统上,这一点是SQL Server的致命点。但在另一方面却也成了最好的促进剂,促使SQL Server在自己仅有的“土地”上面将自己的功能发挥到了极至最大限度的利用了NT系列操作系统的各种潜能!作为SQL Server数据库系统中很重要的一个概念就是存储过程,合理的使用存储过程,可以有效的提高程序的性能;并且将商业逻辑封装在数据库系统中的存储过程中,可以大大提高整个软件系统的可维护性,当你的商业逻辑发生改变的时候,不再需要修改并编译客户端应用程序以及重新分发他们到为数众多的用户手中,你只需要修改位于服务器端的实现相应商业逻辑的存储过程即可。合理的编写自己需要的存储过程,可以最大限度的利用SQL Server的各种资源。下面我们来看看各种编写SQL Server存储过程和使用存储过程的技巧经验。
 
Input 此参数只用于将信息从应用程序传输到存储过程。 
InputOutput 此参数可将信息从应用程序传输到存储过程,并将信息从存储过程传输回应用程序。 
Output 此参数只用于将信息从存储过程传输回应用程序。 
ReturnValue 此参数表示存储过程的返回值。SQL Server 的存储过程参数列表中不显示该参数。它只与存储过程的 RETURN 语句中的值相关联。
  存储过程为主键生成新值后,通常使用存储过程中的 RETURN 语句返回该值,因此用来访问该值的参数类型是 ReturnValue 参数。 
 
1、不带输入参数的简单存储过程
if object_id('up_user') is not null
drop proc up_user
go
create proc up_user
as
set nocount on
delcare @name varchar(10)
begin
select @name=uname from user
end
set nocount off
go
esec up_user
 
2、带输入参数的简单存储过程
 if object_id('up_user') is not null
drop proc up_user
go
create proc up_user
@id int
as
set nocount on
delcare @name varchar(10)
begin
select @name=uname from user where  uid=@id
end
set nocount off
go
--执行该存储过程
esec up_user 1
 
3、带Return参数的存储过程
 if object_id('up_user') is not null
drop proc up_user
go
create proc up_user
as
set nocount on
delcare @age int
begin
select @age=uage from user
return @age
end
set nocount off
go
 
--执行该存储过程
declare @age int
exec @age=up_user
select @age
 
4、带output参数的存储过程
 if object_id('up_user') is not null
drop proc up_user
go
create proc up_user
@id int,
@name varchar(10) ='' output
as
set nocount on
begin
select @name=uname from user where uid=@id
end
set nocount off
go
 
--执行该存储过程
declare @name varchar(10)
exec up_user 2, @name output
select @name
 
5、同时带Return和output参数的存储过程
if exists(select name from sysobjects where name='up_user' and type='p')
drop proc up_user
go
create proc up_user
@id int,
@name varchar(20) output
as
declare @age int
begin
select @age=stuage,@name=stuname from stuinfo where uid=@id
return @age
end
 
--执行该存储过程
declare @age int
declare @name varchar(20)
exec @age=up_user 2,@name output
select @age,@name
 
附:SQL Server 系统全局变量
@@CONNECTIONS 
返回自上次启动以来连接或试图连接的次数。
@@CURSOR_ROWS 
返回连接上最后打开的游标中当前存在的合格行的数量(返回被打开的游标中还未被读取的有效数据行的行数)
@@DATEFIRST 
返回每周第一天的数字
@@ERROR 
返回最后执行的SQL 语句的错误代码。
@@FETCH_STATUS 
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
@@IDENTITY 
返回最后插入的标识值
@@LANGID 
返回当前所使用语言的本地语言标识符(ID)。
@@LANGUAGE 
返回当前使用的语言名。
@@LOCK_TIMEOUT 
返回当前会话的当前锁超时设置,单位为毫秒。
@@PROCID 
返回当前过程的存储过程标识符 (ID) 。
@@ROWCOUNT 
返回受上一语句影响的行数。
@@SERVERNAME 
返回运行 的本地服务器名称。
@@SPID 
返回当前用户进程的服务器进程标识符 (ID)。
@@TRANCOUNT 
返回当前连接的活动事务数。
@@VERSION 
返回当前安装的日期、版本和处理器类型。
@@CPU_BUSY
返回自SQL Server 最近一次启动以来CPU 的工作时间其单位为毫秒
@@DATEFIRST
返回使用SET DATEFIRST 命令而被赋值的DATAFIRST 参数值SET DATEFIRST,命令用来指定每周的第一天是星期几
@@DBTS
返回当前数据库的时间戳值必须保证数据库中时间戳的值是惟一的
@@ERROR
返回执行Transact-SQL 语句的错误代码
@@FETCH_STATUS
返回上一次FETCH 语句的状态值
@@IDLE
返回自SQL Server 最近一次启动以来CPU 处于空闭状态的时间长短单位为毫秒
@@IO_BUSY
返回自SQL Server 最近一次启动以来CPU 执行输入输出操作所花费的时间其单位为毫秒
@@LANGID
返回当前所使用的语言ID 值
@@LANGUAGE
返回当前使用的语言名称
@@LOCK_TIMEOUT
返回当前会话等待锁的时间长短其单位为毫秒
@@MAX_CONNECTIONS
返回允许连接到SQL Server 的最大连接数目
@@MAX_PRECISION
返回decimal 和numeric 数据类型的精确度
@@NESTLEVEL
返回当前执行的存储过程的嵌套级数初始值为0
@@OPTIONS
返回当前SET 选项的信息
@@PACK_RECEIVED
返回SQL Server 通过网络读取的输入包的数目
@@PACK_SENT
返回SQL Server 写给网络的输出包的数目
@@PACKET_ERRORS
返回网络包的错误数目
@@PROCID
返回当前存储过程的ID 值
@@REMSERVER
返回远程SQL Server 数据库服务器的名称
@@SERVICENAME
返回SQL Server 正运行于哪种服务状态之下如MSSQLServer MSDTC SQLServerAgent
@@SPID
返回当前用户处理的服务器处理ID 值
@@TEXTSIZE
返回SET 语句的TEXTSIZE 选项值SET 语句定义了SELECT 语句中text 或image数据类型的最大长度基本单位为字节
@@TIMETICKS
返回每一时钟的微秒数
@@TOTAL_ERRORS
返回磁盘读写错误数目
@@TOTAL_READ
返回磁盘读操作的数目
@@TOTAL_WRITE
返回磁盘写操作的数目
@@TRANCOUNT
返回当前连接中处于激活状态的事务数目

sql server 存储过程 output 和return的使用 方法,详解的更多相关文章

  1. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

  2. SQL Server中排名函数row_number,rank,dense_rank,ntile详解

    SQL Server中排名函数row_number,rank,dense_rank,ntile详解 从SQL SERVER2005开始,SQL SERVER新增了四个排名函数,分别如下:1.row_n ...

  3. 转:SQL Server中服务器角色和数据库角色权限详解

    当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角 ...

  4. SQL Server:排名函数row_number,rank,dense_rank,ntile详解

    1.Row_Number函数 row_number函数大家比较熟悉一些,因为它的用途非常的广泛,我们经常在分页与排序中用到它,它的功能就是在每一行中生成一个连续的不重复的序号 例如: select S ...

  5. SQL Server 表的管理_关于完整性约束的详解(案例代码)

    SQL Server 表的管理之_关于完整性约束的详解 一.概述: ●约束是SQL Server提供的自动保持数据库完整性的一种方法, 它通过限制字段中数据.记录中数据和表之间的数据来保证数据的完整性 ...

  6. SQL Server 2008 R2:error 26 开启远程连接详解

    远程连接sql server 2008 数据库,出现下面的错误: <--在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.    未找到或无法访问服务器.请验证实例名称是 ...

  7. SQL Server数据库partition by 与ROW_NUMBER()函数使用详解[转]

    关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTDB') is not null drop table TESTDB create table ...

  8. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  9. SQL Server存储过程 对数组参数的循环处理

    方法一 分割 例:通过SQL Server存储过程传送数组参数删除多条记录 eg. ID 值为'1,2,3' 以下存储过程就是删除表中id号为1,2,3的记录: CREATE PROCEDURE De ...

随机推荐

  1. C++ 生成 voronoi 图 & C++生成泰森多边形图形

    1. 功能 生成voronoi图的一个类 2. 代码 VoronoiDiagramGenerator.h #pragma once //Microsoft Visual Studio 2015 Ent ...

  2. 2019.10.16&17小结

    话说也蛮久没写小结了,主要这两次考试失分严重,还是总结下吧. 10.16 T1 小奇挖矿2 100/0 [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿石交易市 ...

  3. C++ 中 static 与 const 的用法及对比

    在这个学习过程中我对 static 及 const 的使用时常会混淆,因此整理,加深记忆 一.类的静态成员 如果某个属性为整个类所共有,不属于任何一个具体对象,则采用 static 关键字来声明静态成 ...

  4. triples I(按位或运算及3的特性)(2019牛客暑期多校训练营(第四场)D)

    示例1: 输入: 2 3 7 输出: 1 32 3 6 说明:3=3, (3|6)=7 题意:输出尽可能少的数字,他们的按位或结果为输入的数字a. 题解:(表示看不懂题解,看山东大佬的代码看懂的)首先 ...

  5. C++语言类之间的关系

    在c++中通过类定义对象,而类与类之间也有着复杂的关系,所以题外话,我能理解到c++的编写者可能就想通过计算机语言去模拟世界万物之间的关系,这篇帖子主要从横向和纵向去讨论类之间关系 而在一个类中想要使 ...

  6. C#不支持XPATH2.0

    .net中的XPATH是1.0版本的,很多2.0中的函数是不兼容的,比如lower-case().replace()函数等,下面中的XPATH语句在运行时会报错 //table[contains(lo ...

  7. rabbitmd

    一.前期准备   (1)条件:准备3台linux系统,确保能连到download.yunwei.edu   (2)编写yum源下载脚本: vim yum-repo.sh wget -O /etc/yu ...

  8. iOS - Scenekit3D引擎初探之 - 给材质贴图

    今天简单说一下 SceneKit 给材质贴图. 1,最简单的一种方法,直接打开dae 或者 scn 文件直接设置  如上图,这个dae 文件中只有一个几何体,几何体中只有一个材质球,然后设置材质球的d ...

  9. 前端之:传统的DOM是如何渲染的?

    a.纯后端渲染:页面发送请求,后端服务器中将数据拼成完整DOM树,并转换成一个字节流作为HTTP Response的body返回给浏览器.优点在于 返回的HTTP Response是包含着全部页面内容 ...

  10. JqueryAjax 常用复制

    $.ajax({ type : "POST", url : "", data : {}, success : function(data) { } }); $. ...