sql server 2008存储过程参数

--使用存储过程参数

--包括输入参数和输出参数,以及参数的默认值

--指定参数名称和数据类型

--输入参数允许用户将数据值传递到存储过程或者函数

--输出参数允许存储过程将数据值或者游标变量传递给用户

--存储过程的参数在创建时应该在create procedure 和as关键值之间定义,每个参数都有指定参数名和数据类型,参数名必须以

[email protected]开头为前缀,各个参数定义之间用逗号隔开

[email protected]_name data_type[=default][output]

--实例:创建一个指定参数名称和数据类型的存储过程

use 学生成绩管理系统

go

create procedure pro_教师信息

@age int,@sex cnhar(10)

as

select 教师编号,姓名,性别,年龄,籍贯

from 教师信息

where 年龄[email protected] and 性别[email protected]

--sql server2008提供了两种传递参数的方式

--按位置传递

这种方式是在执行存储过程的语句中,直接给出参数的值,当有多个参数时,给出的参数的顺序与创建存储过程的语句中的参数顺序一致

例如:

exec pro_教师信息 26,‘女‘

--通过参数名传递

这种方式是在执行存储过程的语句中,使用"参数名=参数值"的形式给出参数值,通过参数名传递参数的好处是,

参数可以以任意顺序给出

例如:

exec pro_教师信息 @sex=‘女‘,@age=26

--输入参数

输入参数是指在存储过程中设置一个条件,在执行存储过程时为这个条件指定值,通过存储过程返回相应的信息,使用

输入参数可以向同一个存储过程多次查找数据库

use 学生成绩管理系统

go

create procedure pro_班级信息

@班级编号 nvarchar(20)

as

select S.学号,S.姓名,S.性别,S.所属班级,C.班级名

from 学生信息 S,班级信息 C

where S.所属班级=C.班级编号 and S.所属班级[email protected]班级编号

--为参数指定默认值

在定义参数时可以为可选参数指定一个默认值,执行该存储过程,如果未指定其他值,则使用默认值

use 学生成绩管理系统

go

create procedure pro_成绩信息

@分数 nvarchar(50) =‘60‘

as

select S.学号,S.姓名,S.性别,S.所属班级,G.成绩编号,G.考试编号,G.课程编号,G.分数

from 学生信息 S,成绩信息 G

where S.学号=G.学生编号 and G.分数>@分数

exec pro_成绩信息

--输出参数

use 学生成绩管理系统

go

create procedure pro_TeacherName

@学生名称 nvarchar(20)=‘hephec‘

@辅导员名称 nvarchar(20) output

as

select @辅导员名称=T.姓名

from 学生信息 S,班级信息 C,辅导员信息 T

where S.所属班级=C.班级信息 and C.辅导员=T.辅导员编号

and S.姓名[email protected]学生名称

go

为了接受存储过程的返回值,需要定义一个变量来存放返回参数的值,在该存储过程的调用语句中,必须为定义的变量加上output

关键字来声明

declare @name nvarchar(20)

exec pro_TeacherName ‘hephec‘ @Name output

select ‘辅导员是:‘+@name as ‘结果‘

go

时间: 2024-11-01 07:16:43

sql server 2008存储过程参数的相关文章

SQL SERVER 2008 存储过程传表参数

? 最近项目使用到了存储过程传入表类型参数. --定义表类型 create type t_table_type as table ( id int, name varchar(32), sex varchar(2) ) ? go --创建存储过程 CREATE PROC u_test (@t t_table_type readonly) as begin ???? select * from @t ???? end ? --调用存储过程 declare @t t_table_type ? ins

SQL Server 2008 存储过程示例

出处:http://www.jb51.net/article/54730.htm --有输入参数的存储过程-- create proc GetComment (@commentid int) as select * from Comment where [email protected] 调用方式:exec GetComment 3   --有输入与输出参数的存储过程-- create proc GetCommentCount @newsid int, @count int output as

SQL Server 2008存储过程的加密

存储过程加密    使用理由如下: 1.使用存储过程,至少在防非法注入(inject)方面提供更好的保护.至少,存储过程在执行前,首先会执行预编译,(如果由于非法参数的原因)编译出错则不会执行,这在某种程度上提供一层天然的屏障. 2.使用存储过程而不是直接访问基表,可以提供更好的安全性.你可以在行级或列级控制数据如何被修改.相对于表的访问,你可以确认有执行权限许可的用户执行相应的存储过程.这也是访问数据服务器的惟一调用途径.因此,任何偷窥者将无法看到你的SELECT语句.换句话说,每个应用只能拥

SQL Server 2008 表值参数用法

下面的示例使用 Transact-SQL 并演示如何执行以下操作:创建表值参数类型,声明变量来引用它,填充参数列表,然后将值传递到存储过程. 1 USE AdventureWorks; 2 GO 3 4 /*创建表值参数类型 */ 5 CREATE TYPE LocationTableType AS TABLE 6 ( LocationName VARCHAR(50) 7 , CostRate INT ); 8 GO 9 10 /* 创建一个过程来获得该表值参数数据 */ 11 CREATE P

SQL Server 2008数据库视频教程

SQL Server 2008数据库视频教程 SQL Server 一直以来都是大型数据库的代表,一直以来以其查询速度快,性能稳定而闻名.本套教程,由李天生老师亲自授课录制,从最基础的知识讲起,让每一个想学习SQL Server的学员,都可以轻松学会大型数据库管理. 本站最新推出SQL Server 2016视频教程,大家可以看一下http://www.xin3721.com/eschool/sql2016xin3721/ SQL Sever 2008下载地址 第一章 SQL Server基础

SQL Server 2008 R2——T-SQL 存储过程 返回表

未完成,感觉有点问题. ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于出版.印刷或学术引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4374367.html =

SQL Server 2008 表变量参数(表值参数)用法

表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据. 表值参数与 OLE DB 和 ODBC 中的参数数组类似,但具有更高的灵活性,且与 Transact-SQL 的集成更紧密.表值参数的另一个优势是能够参与基于数据集的操作. (注意:Transact-SQL 通过引用向例程传递表值参数,以避免创建输入数据的副本.) 在 Tra

SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息

原文:SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的GIS专业理论知识. 5.其他相

在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalScore] @categoryKey int, @objectIds VARCHAR(MAX) AS BEGIN      SELECT c.Name,AVG(e.Score) Score FROM dbo.Sys_com_comment_main m      INNER JOIN dbo.sys