呵呵,SQL 高级编程问题。。

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:34:31
USE employee
GO
IF EXISTS (select * from sysobjects where name='test')
DROP procedure test
GO
CREATE PROCEDURE test
@writtenpass int=60,
@labpass int=60
AS
IF(NOT @writtenpass between 0 and 100) or(not @labpass between 0 and 100)
begin
raiserror('及格线错误,请制定0-100之间的分数,统计中断退出',10,1)
return
end
print '笔试及格线:'+convert(varchar(5),@writtenpass)+'机试及格线:'+convert(varchar(5),@labpass)
while(1=1)
begin
update stuMarks set writtenExam=writtenExam+2 where MIN(writtenExam)<=60
update stuMarks set writtenExam=100 where wittenExam>100
--这句好像出错了 显示的错误是:消息 147,级别 15,状态 1,过程 test,第 14 行
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。
但是我看不出来哪里出错拉。高手帮帮我。
update stuMarks set labExam=labExam+2 where MIN(labExam)<=60
update stuMarks set labExam=100 where labExam>100

if (((select min(writtenExam) from stuMarks)>=60)

把min()去掉
反正都是比较小于等于60的了
还要最小值干嘛。。。。那不没有意义了嘛

update stuMarks set labExam=labExam+2 where MIN(labExam)<=60
你这是什么意思啊?