6.1.2存储过程的创建和执行 sQLQuerys5.sql-docal) School (sa(57) SQLQuery4 sql -(local), School (sa(53)*R E DEClARE Return value int, Cnumber int P EXEc Return value= IdbolaIrroc countstudentl Cccode= N'100001', Cnumber @number OUTPUT seleCT number as N'Cnumber t sELECT 'Return Value= Return value 国结果消息 @number Retum Value 10 歃掂庠教不 2 SQLServer2008
数据库技术 【例6-3】在School中创建存储过程proc_CountStudent,根据课 程编号统计选修该课程的学生人数。 CREATE PROC proc_CountStudent @ccode varchar(20), -- 课程号,输入参数 @number int OUTPUT -- 选课人数,输出参数 AS SELECT @number=COUNT(Grade.StudentCode) FROM Grade WHERE Grade.CourseCode=@ccode 执行方法: •在SSMS中右击存储过程proc_CountStudent,在右键菜单中点击 “执行存储过程” •输入@ccode的值后,点击“确定” 6.1.2 存储过程的创建和执行
6.1.2存储过程的执行 使用对象资源管理器中执行存储过程,操作方法如下: 文件(编辑E)视图(项目(P)调试D)工具(窗W)社区(帮助(H 卫新速查询N出器舀冯 执行00日√影即自三当理 象资源管理器 sQLQuery9. sqI- Js.t(SZX2yanh(57)) U Student 田□数库关系图 E DECLARE Return value int 表 图□糖 田□同义词 SELECT Return Value= return value 日□可编程性 日□存储过程 团白系统存储过程 田 dbo Average score 丑结果消息 新建存储过程(N St Name AvgScore 班艳89 执行存储过程(E) 可阳83 黄正刚78 查看依赖关系 91 刘小玲92 策略(O) 末羽佳90 方面(A) 田Sen启动 PowerShell Retum Value 由□ 重命名(M 查询已成功执行。 Student 00: 00:00 155 删除①) 13 数据库技术 2 SOL Server2008
数据库技术 6.1.2 存储过程的执行 使用对象资源管理器中执行存储过程,操作方法如下: 13
6.1.3存储过程参数和执行状态 存储过程参数 类型有:“输入”和“输出”参数 (1)输入参数 定义存储过程时,可指定输入参数,以@作为参数名称的 前置字符,声明若干个参数变量及其数据类型,一个存储 过程最多指定1024个参数。 (2)输出参数 如果要在存储过程中传回值给调用者,可在参数名称后使 用0 UTPUT关键词。 同时,为了使用输出参数,必须在创建和执行存储过程时 都使用0 SUTPUT关键词。 14 数据库技术 2 SOL Server2008
数据库技术 6.1.3 存储过程参数和执行状态 存储过程参数 类型有:“输入”和“输出”参数 (1)输入参数 定义存储过程时,可指定输入参数,以@作为参数名称的 前置字符,声明若干个参数变量及其数据类型,一个存储 过程最多指定1024个参数。 (2)输出参数 如果要在存储过程中传回值给调用者,可在参数名称后使 用OUTPUT 关键词。 同时,为了使用输出参数,必须在创建和执行存储过程时 都使用OUTPUT关键词。 14
6.1.3存储过程参数和执行状态 【例6.4】创建一个带两个参数的存储过程,从 St Info、 C Info、 SC Info表的相关联接中返回输入参数的学生姓名 和课程类别、该学生选课的课程名称和成绩。 CREATE PROCEDURE ScOreInfo @stname varchar(20), @ctype char(4 AS SELECT St Name, C Type, C Name, Score FROM St Info a. SC Info b. C Info c Where a, st id=b st id and bc no =cc no and St Name= @stname AND C Type= @ctype 在“新建查询”窗格中输入并运行如下命令: EXEC ScoreInfo’吴中华,必修 Name C Type C Name Score 15-1吴中华必修大学计算机基础7 2 SOL Server2008
数据库技术 6.1.3 存储过程参数和执行状态 【例6.4】创建一个带两个参数的存储过程,从St_Info、 C_Info、S_C_Info表的相关联接中返回输入参数的学生姓名 和课程类别、该学生选课的课程名称和成绩。 CREATE PROCEDURE ScoreInfo @stname varchar(20), @ctype char(4) AS SELECT St_Name, C_Type, C_Name, Score FROM St_Info a, S_C_Info b, C_Info c WHERE a.St_ID = b.St_ID AND b.C_No = c.C_No AND St_Name = @stname AND C_Type = @ctype 在“新建查询”窗格中输入并运行如下命令: EXEC ScoreInfo '吴中华','必修' 15