下面这个函数有错,我在sql plus的执行无法通过
错在哪? 谢谢
CREATE OR REPLACE FUNCTION fun_print(str_val IN VARCHAR2)
RETURN VARCHAR2
IS 
BEGIN
  RETURN str_var || '...';
END fun_print;
下面这个复杂一点,也是个朋友写给我的,也没法执行,麻烦各位帮忙看看create or replace function f_GetCol_Sum(str_Val in varchar2) 
return varchar2 
is
  result_value varchar2(32767); 
cursor c_GetCol_Sum is 
  select CLASSNUM,STUDENTNUM from T_CLASS where CLASSNUM = str_Val; 
begin 
Result :=''; 
for cGetCol_Sum in c_GetCol_Sum loop 
   result_value := result_value || cGetCol_Sum.学号 || ','; 
end loop;  
  return result_value; 
end f_GetCol_Sum;

解决方案 »

  1.   

    传进来的是str_val
    RETURN str_var  ¦ ¦ '...';   --没有 str_var 这个变量,当然错了
    试下
    create or replace function f_GetCol_Sum(str_Val in varchar2) 
    return varchar2 
    is
      result_value varchar2(2000);--最大只能2000 
    sReturn T_CLASS%rowtype;
    type cursor_type is ref cursor;
        c1 cursor_type;
      
    begin 
    Result :=''; 
    open c1 for 'select CLASSNUM,STUDENTNUM from T_CLASS where CLASSNUM = str_Val'; 
    loop
       fetch c_GetCol_Sum into sReturn;
    exit when c_GetCol_Sum%notfound;
       result_value := result_value  ¦ ¦ sReturn.CLASSNUM  ¦ ¦ ','; 
    end loop;  
      return result_value; 
    end f_GetCol_Sum;