这是一段sql语句,在sql2000查询分析器中编辑,显示except所在行有语法错误,在最后一行: ')' 附近有语法错误。请问大家这是那里错了,谢谢了
select distinct S.stuNum as 学号, S.stuName as 姓名 from stu as S 
where not exists((select distinct cNum as 课程 from course)
except
(select distinct relation.cNum as 课程 from stu as SS,relation
 where SS.stuNum=relation.stuNum and S.stuNum=SS.stuNum));

解决方案 »

  1.   

    SQL2000不支持EXCEPT和INTERSECT这两个命令的。EXCEPT 可以换成 and not exists 
    INTERSECT 可以换成 and Exists 
      

  2.   

    下面是2000中的代码,请问这样定义函数可以吗?好像有好多错误,
    create function sumCredit(Num int)
    returns integer 
    begin 
    declare sumCredit integer default 0;
    for r as 
         select credit from relation,course where relation.stuNum=Num and
            relation.cNum=course.cNum
    do
    set sumCredit=sumCredit+r.credit
    end for
    return sumCredit;
    end
    服务器: 消息 170,级别 15,状态 1,过程 sumCredit,行 1
    第 1 行: 'Num' 附近有语法错误。
    服务器: 消息 155,级别 15,状态 1,过程 sumCredit,行 4
    'integer' 不是可以识别的 CURSOR 选项。
    服务器: 消息 170,级别 15,状态 1,过程 sumCredit,行 8
    第 8 行: 'do' 附近有语法错误。
    服务器: 消息 178,级别 15,状态 1,过程 sumCredit,行 11
    在此上下文中不能使用带有返回值的 RETURN 语句。
      

  3.   

    create function sumCredit(@Num int) 
    returns integer 
    begin 
    declare @sumCredit int
    set @sumCredit = 0 
     
        select @sumCredit = sum(credit) 
        from relation,course 
        where relation.stuNum=2Num and relation.cNum=course.cNum 
     
     
    return @sumCredit; 
    end