1、带输入/输出参数的存储过程
创建一个存储过程proc_age,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息)(已经创建了学生数据库,里面有学号、姓名、年龄、性别和专业等属性)
2、返回状态值的存储过程
(1)创建一个存储过程proc_status,使其能够根据学生姓名,查询学生的选课信息。
(如果没有输入学生姓名,返回状态码55;如果输入的学生姓名不存在,则返回状态码-155)(2)执行存储过程:接收存储过程返回的状态码,如果返回的状态码为55则输出提示信息“没有输入名字!!”;如果返回的状态码为-155,则输出“没找到!!”。(这里有另外的一个表:选课表,里面有学号、课程号和成绩等属性,学生表和上面的一样)
创建一个存储过程proc_age,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息)(已经创建了学生数据库,里面有学号、姓名、年龄、性别和专业等属性)
2、返回状态值的存储过程
(1)创建一个存储过程proc_status,使其能够根据学生姓名,查询学生的选课信息。
(如果没有输入学生姓名,返回状态码55;如果输入的学生姓名不存在,则返回状态码-155)(2)执行存储过程:接收存储过程返回的状态码,如果返回的状态码为55则输出提示信息“没有输入名字!!”;如果返回的状态码为-155,则输出“没找到!!”。(这里有另外的一个表:选课表,里面有学号、课程号和成绩等属性,学生表和上面的一样)
(
学号 NVARCHAR(10),
姓名 NVARCHAR(50),
年龄 INT,
性别 BIT,
专业 NVARCHAR(100)
)
INSERT INTO 学生数据库
SELECT '001', '张三', 19, 1, '计算机应用'
UNION ALL
SELECT '002', '李凤', 18, 0, '英语'
--#1
CREATE PROCEDURE proc_age
@姓名 NVARCHAR(50)
AS
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM 学生数据库 WHERE 姓名 = @姓名)
SELECT 姓名, 年龄 FROM 学生数据库 WHERE 姓名 = @姓名
ELSE
SELECT [ERROR] = N'该学生信息不存在:' + @姓名
ENDEXEC proc_age '张三'
EXEC proc_age '测试'
----------------------------------------------------------
CREATE TABLE 选课表
(
学号 NVARCHAR(10),
课程号 NVARCHAR(10),
成绩 INT
)
INSERT INTO 选课表
SELECT '001', '历史', 95
UNION ALL
SELECT '002', '物理', 98
--#2(1)
CREATE PROCEDURE proc_status
@姓名 NVARCHAR(50),
@ErrorCode INT OUTPUT
AS
BEGIN
IF @姓名 IS NULL OR @姓名 = ''
SET @ErrorCode = 55
ELSE IF EXISTS(SELECT TOP 1 1 FROM 学生数据库 A INNER JOIN 选课表 B ON A.学号 = B.学号 WHERE A.姓名 = @姓名)
BEGIN
SELECT A.学号, A.姓名, A.专业, B.课程号, B.成绩
FROM 学生数据库 A
INNER JOIN 选课表 B
ON A.学号 = B.学号
WHERE A.姓名 = @姓名
SET @ErrorCode = 0
END
ELSE
SET @ErrorCode = -155
END
--#2(2)
DECLARE @ErrorCode INT
EXEC proc_status '张三', @ErrorCode OUTPUT
--EXEC proc_status '', @ErrorCode OUTPUT
--EXEC proc_status '测试', @ErrorCode OUTPUT
IF @ErrorCode = 55
SELECT [ERROR] = N'没有输入名字!'
ELSE IF @ErrorCode = -155
SELECT [ERROR] = N'没找到!'