create or replace function look_for
(xuehao in char)
return number
as
n number;
begin
select avg(学分) into n
from 学生
where 学号='xuehao';
while(n)
loop 
n=n+(n-1);
end loop;
return(n);
end look_for;
Oracle程序,帮看看哪里出错,谢谢

解决方案 »

  1.   

    as
    begin……
    改成
    is
    begin……
      

  2.   

    while(n) --n > 100? n>0? 改这里吧
      

  3.   

     Thank you!
      

  4.   

    create or replace function look_for(xuehao in char) return number is
      n number;
    begin
      select avg(学分) into n from 学生 where 学号 = 'xuehao';
      while (n > 60) loop
        n := n + (n - 1);
      end loop;
      return n;
    end look_for;
      

  5.   

    create or replace function look_for 
    (xuehao in char) 
    return number 
    as 
    n number; 
    begin 
    select avg(学分) into n 
    from 学生 
    where 学号='xuehao';  --xuehao变量有问题吧,不要加''. 还需要注意no_data_found的异常处理
    while(n)             --n? 如我前面所说,要做一个bool表达式。这不是c/c++, 要有关系运算的
    loop 
    n=n+(n-1); 
    end loop; 
    return(n); 
    end look_for; 
      

  6.   

    create or replace function look_for 
    (xuehao in char) 
    return number 
    as 
    n number; 
    begin 
    select avg(学分) into n 
    from 学生 
    where 学号='xuehao'; 
    while(n) 
    loop 
    n=n+(n-1); 
    end loop; 
    return(n); 
    end look_for; 
    Oracle程序,帮看看哪里出错,谢谢你这里有2处错误
    第一 oracle中的附值 :=不是=
    第二  while中的参数最终结果要是true 或者是false 的
      

  7.   

    改成下面的:
    CREATE OR REPLACE FUNCTION LOOK_FOR(XUEHAO IN CHAR) RETURN NUMBER AS
      N NUMBER;
    BEGIN
      SELECT AVG(学分) INTO N FROM 学生 WHERE 学号 = XUEHAO;
    /*  WHILE (N) LOOP
        N = N +(N - 1);
      END LOOP;*/
      RETURN(N);
    END LOOK_FOR;
    /
    错误:
    1. xuehao不能用引号引用
    2. while循化无法结束.
    3. 赋值语法是 n:=n+n-1;