各位大侠,帮帮忙!有如下测试代码:
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)还不行,
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)还不行,
v varchar(10);
p char这样写的话相当于p char(1),长度肯定不够.你改成p char(18)后报什么错,拿出来看看?