日期:2014-05-17  浏览次数:20916 次

函数创建成功,在执行时提示数字或值错误 : 字符串缓冲区太小
create or replace function getParentTypeName(TypeID number)
 return varchar2
 is
  TempName varchar2(200);
  ReturnName varchar2(2000);
  TempID number;
 begin
  TempID:=0;
  select name into TempName FROM ar_fault_type where id=TypeID;
  SELECT ID into TempID FROM AR_FAULT_TYPE WHERE ID=TypeID;
  while TempID>1 loop
  begin
  ReturnName:=TempName||'->'||ReturnName;
  select name into TempName FROM ar_fault_type where id=TempID;
  SELECT ID into TempID FROM AR_FAULT_TYPE WHERE ID=TempID;
  end;
  end loop;
   
  ReturnName:= TempName||'->'||ReturnName;
  return ReturnName;
   
 end getParentTypeName;

提示出现错误在 ReturnName:=TempName||'->'||ReturnName; 这一行。

高手看看是哪里的问题呢??


------解决方案--------------------
探讨
引用:
我考虑到了这个问题,但我需要给一个varchar2的变量不断循环赋加值,请问有没有什么解决方法呢?

------解决方案--------------------
如果你输入的值查找出来的TempID>1, 就是一个死循环,再长也不行。