2),创建一个带参数存储过程stu_age,该存储过程根据输入的学号,在student表中计算此学生的年龄,并根据不同结果返回不同值:执行成功,返回0,执行出错,返回-1
时间: 2024-05-11 10:18:03 浏览: 20
以下是创建带参数存储过程stu_age的SQL代码:
```
CREATE PROCEDURE stu_age
@stu_id INT,
@age INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @dob DATE
SELECT @dob = dob FROM student WHERE id = @stu_id
IF @dob IS NULL
BEGIN
-- 学号不存在
RETURN -1
END
ELSE
BEGIN
-- 计算年龄
SET @age = DATEDIFF(YEAR, @dob, GETDATE())
IF (MONTH(@dob) > MONTH(GETDATE())) OR (MONTH(@dob) = MONTH(GETDATE()) AND DAY(@dob) > DAY(GETDATE()))
BEGIN
SET @age = @age - 1
END
RETURN 0
END
END
```
该存储过程有两个参数:输入参数@stu_id表示学生的学号,输出参数@age表示计算出来的年龄。存储过程会根据输入的学号在student表中查询出该学生的出生日期,并根据当前日期计算出学生的年龄。如果输入的学号不存在,则返回-1表示执行出错;否则返回0表示执行成功。