各位大侠,帮帮忙!有如下测试代码:
CREATE or replace FUNCTION  tran_dept (dept  in   char)
   RETURN CHAR
 AS
   v char;
   BEGIN
   case  dept
    When 'cs' THEN v:='计算机系';
    When 'is' THEN v:='信息系';
    When 'ms' THEN v:='数学系';
   END case;
 return (v);
 END tran_dept ;    函数已创建SQL> DECLARE
  2  p char;
  3  MSG  CHAR (20);
  4  BEGIN
  5  Select sdept into p from student  where sno='07001' ;
  6    MSG := tran_dept(p);
  7    DBMS_OUTPUT.PUT_LINE(MSG);
  8* END;
SQL> /
DECLARE
*
第 1 行出现错误:
ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小
ORA-06512: 在 line 5问题1:函数创建中变量不能指定长度吗?如v char;
问题2:函数调用为啥出错?我将第二行改为p char(18)还不行,