函数创建成功,在执行时提示数字或值异常 : 字符串缓冲区太小
函数创建成功,在执行时提示数字或值错误 : 字符串缓冲区太小
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; 这一行。
高手看看是哪里的问题呢??
------解决方案--------------------
------解决方案--------------------
如果你输入的值查找出来的TempID>1, 就是一个死循环,再长也不行。
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; 这一行。
高手看看是哪里的问题呢??
------解决方案--------------------
------解决方案--------------------
如果你输入的值查找出来的TempID>1, 就是一个死循环,再长也不行。