CREATE TABLE Rank(
division CHAR(20),
number INT); CREATE PROC statistic_(name CHAR(20))
AS
DECLARE
less60 int := 0; //分为五个分数段,并置初始值为0
b60a70 int := 0;
b70a80 int := 0;
b80a90 int := 0;
more90 int := 0;
curcno CHAR(4); --设字符型变量curcno 存放输入的课程名称参数
BEGIN
SELECT 课程号 INTO curcno --根据课程名称在Course 表中查询查询该课程号
FROM 课程表
WHERE 课程名 = name;
IF NOT FOUND THEN --如果不存在用户输入的课程名称,返回错误信息
RAISE EXCEPTION '输入错误,没有该课程';
END IF;
SELECT count(*) INTO less60 --查询分数低于60 分的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 < 60;
SELECT count(*) INTO b60a70 --查询分数在60 到70 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 60 AND 成绩 < 70;
SELECT count(*) INTO b70a80 --查询分数在70 到80 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 70 AND 成绩 < 80;
SELECT count(*) INTO b80a90 --查询分数在80 到90 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 80 AND 成绩 < 90;
SELECT count(*) INTO more90 --查询分数高于90 的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 90;
--向表Rank 中插入五条记录,显示成绩分布情况
INSERT INTO Rank VALUES('[0,60)',less60);
INSERT INTO Rank VALUES('[60,70)',b60a70);
INSERT INTO Rank VALUES('[70,80)',b70a80);
INSERT INTO Rank VALUES('[80,90)',b80a90);
INSERT INTO Rank VALUES('[90,100]',more90);
END 消息 102,级别 15,状态 1,过程 statistic_,第 1 行
'name' 附近有语法错误。
消息 155,级别 15,状态 2,过程 statistic_,第 4 行
'int' 不是可以识别的 CURSOR 选项。
消息 4145,级别 15,状态 1,过程 statistic_,第 14 行
在应使用条件的上下文(在 'THEN' 附近)中指定了非布尔类型的表达式。
消息 128,级别 15,状态 1,过程 statistic_,第 33 行
在此上下文中不允许使用名称 "less60"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 34 行
在此上下文中不允许使用名称 "b60a70"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 35 行
在此上下文中不允许使用名称 "b70a80"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 36 行
在此上下文中不允许使用名称 "b80a90"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 37 行
在此上下文中不允许使用名称 "more90"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。 出现上面的错误,怎么解决啊
division CHAR(20),
number INT); CREATE PROC statistic_(name CHAR(20))
AS
DECLARE
less60 int := 0; //分为五个分数段,并置初始值为0
b60a70 int := 0;
b70a80 int := 0;
b80a90 int := 0;
more90 int := 0;
curcno CHAR(4); --设字符型变量curcno 存放输入的课程名称参数
BEGIN
SELECT 课程号 INTO curcno --根据课程名称在Course 表中查询查询该课程号
FROM 课程表
WHERE 课程名 = name;
IF NOT FOUND THEN --如果不存在用户输入的课程名称,返回错误信息
RAISE EXCEPTION '输入错误,没有该课程';
END IF;
SELECT count(*) INTO less60 --查询分数低于60 分的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 < 60;
SELECT count(*) INTO b60a70 --查询分数在60 到70 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 60 AND 成绩 < 70;
SELECT count(*) INTO b70a80 --查询分数在70 到80 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 70 AND 成绩 < 80;
SELECT count(*) INTO b80a90 --查询分数在80 到90 之间的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 80 AND 成绩 < 90;
SELECT count(*) INTO more90 --查询分数高于90 的学生人数
FROM 成绩表
WHERE 课程号 = curcno AND 成绩 >= 90;
--向表Rank 中插入五条记录,显示成绩分布情况
INSERT INTO Rank VALUES('[0,60)',less60);
INSERT INTO Rank VALUES('[60,70)',b60a70);
INSERT INTO Rank VALUES('[70,80)',b70a80);
INSERT INTO Rank VALUES('[80,90)',b80a90);
INSERT INTO Rank VALUES('[90,100]',more90);
END 消息 102,级别 15,状态 1,过程 statistic_,第 1 行
'name' 附近有语法错误。
消息 155,级别 15,状态 2,过程 statistic_,第 4 行
'int' 不是可以识别的 CURSOR 选项。
消息 4145,级别 15,状态 1,过程 statistic_,第 14 行
在应使用条件的上下文(在 'THEN' 附近)中指定了非布尔类型的表达式。
消息 128,级别 15,状态 1,过程 statistic_,第 33 行
在此上下文中不允许使用名称 "less60"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 34 行
在此上下文中不允许使用名称 "b60a70"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 35 行
在此上下文中不允许使用名称 "b70a80"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 36 行
在此上下文中不允许使用名称 "b80a90"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。
消息 128,级别 15,状态 1,过程 statistic_,第 37 行
在此上下文中不允许使用名称 "more90"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。 出现上面的错误,怎么解决啊
@less60 int ,-- //分为五个分数段,并置初始值为0
@b60a70 int,
@b70a80 int ,
@b80a90 int ,
@more90 int ---用变量的地方加@
CREATE PROC statistic_
@name CHAR(20)
AS
DECLARE
@less60 int,
@b60a70 int,
@b70a80 int,
@b80a90 int,
@more90 int,
@curcno CHAR(4) --设字符型变量curcno 存放输入的课程名称参数
BEGIN
SELECT 课程号 INTO @curcno
FROM 课程表
WHERE 课程名 = @name
--IF NOT FOUND THEN --如果不存在用户输入的课程名称,返回错误信息
--RAISE EXCEPTION '输入错误,没有该课程';
--END IF;
SELECT count(*) INTO @less60 --查询分数低于60 分的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩< 60
SELECT count(*) INTO @b60a70 --查询分数在60 到70 之间的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 >= 60 AND 成绩< 70
SELECT count(*) INTO @b70a80 --查询分数在70 到80 之间的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 >= 70 AND 成绩 < 80
SELECT count(*) INTO @b80a90 --查询分数在80 到90 之间的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 >= 80 AND 成绩 < 90
SELECT count(*) INTO @more90 --查询分数高于90 的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 >= 90
--向表Rank 中插入五条记录,显示成绩分布情况
INSERT INTO Rank VALUES('[0,60)',@less60);
INSERT INTO Rank VALUES('[60,70)',@b60a70);
INSERT INTO Rank VALUES('[70,80)',@b70a80);
INSERT INTO Rank VALUES('[80,90)',@b80a90);
INSERT INTO Rank VALUES('[90,100]',@more90);
END
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 < 60
--->
SELECT @less60=count(*) --查询分数低于60 分的学生人数
FROM 成绩表
WHERE 课程号 = @curcno AND 成绩 < 60 下同