SQL> edit
已写入 file afiedt.buf 1 CREATE or replace FUNCTION tran_dept (dept in char)
2 RETURN char
3 AS
4 v char ;
5 BEGIN
6 case dept
7 When 'cs' THEN v:='计算机系';
8 When 'is' THEN v:='信息系';
9 When 'ms' THEN v:='数学系';
10 END case;
11 return (v);
12* END tran_dept ;
SQL> /函数已创建。SQL> select tran_dept('cs') from dual;
select tran_dept('cs') from dual
*
第 1 行出现错误:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "SYSTEM.TRAN_DEPT", line 7
请问这是咋的啦,如何改?
已写入 file afiedt.buf 1 CREATE or replace FUNCTION tran_dept (dept in char)
2 RETURN char
3 AS
4 v char ;
5 BEGIN
6 case dept
7 When 'cs' THEN v:='计算机系';
8 When 'is' THEN v:='信息系';
9 When 'ms' THEN v:='数学系';
10 END case;
11 return (v);
12* END tran_dept ;
SQL> /函数已创建。SQL> select tran_dept('cs') from dual;
select tran_dept('cs') from dual
*
第 1 行出现错误:
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "SYSTEM.TRAN_DEPT", line 7
请问这是咋的啦,如何改?
2 RETURN varchar2
3 AS
4 v varchar2(20);
5 BEGIN
6 case dept
7 When 'cs' THEN v:='计算机系';
8 When 'is' THEN v:='信息系';
9 When 'ms' THEN v:='数学系';
10 END case;
11 return (v);
12* END tran_dept ;
SQL> /
能否接两个字符作为参数呢.
提示你的字符缓冲区不足.
改写成v char(2);
在PL/SQL中的函数定义变量是需要长度的!