+ -
当前位置:首页 → 问答吧 → 函数创建成功,在执行时提示数字或值错误 : 字符串缓冲区太小

函数创建成功,在执行时提示数字或值错误 : 字符串缓冲区太小

时间:2011-11-23

来源:互联网

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; 这一行。

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

作者: mjlwq   发布时间: 2011-11-23

ReturnName 定义是2000长度。
2000长度 := 200的长度 又+ 2000的长度。

应该是超出范围了吧。

作者: yixilan   发布时间: 2011-11-23

引用楼主 mjlwq 的回复:
create or replace function getParentTypeName(TypeID number)
return varchar2
is
TempName varchar2(200);
ReturnName varchar2(2000);
TempID number;
begin
TempID:=0;
select name into ……


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

作者: mjlwq   发布时间: 2011-11-23

引用 1 楼 yixilan 的回复:
ReturnName 定义是2000长度。
2000长度 := 200的长度 又+ 2000的长度。

应该是超出范围了吧。


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

作者: mjlwq   发布时间: 2011-11-23

ReturnName varchar2(8000);

作者: programmerxiaocai   发布时间: 2011-11-23

引用 4 楼 programmerxiaocai 的回复:
ReturnName varchar2(8000);


按一楼所说,即使定义8000的长度,也会出现类似的问题的。我查出的字符串大小没个都不到100。

还请大牛们指教指教啊!!!

作者: mjlwq   发布时间: 2011-11-23

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

你在每次赋完值之后,都输出一下,看看最后退出前的ReturnName,累加完到底是多少。
while TempID>1 loop
  begin
  ReturnName:=TempName||'->'||ReturnName;
  dbms_output.put_line(ReturnName);
  ...
  end loop

另外想问一下,你这个LOOP能循环多少次?

作者: yixilan   发布时间: 2011-11-23

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

作者: programmerxiaocai   发布时间: 2011-11-23

引用 7 楼 programmerxiaocai 的回复:
如果你输入的值查找出来的TempID>1, 就是一个死循环,再长也不行。

哈哈,的确是个死循环,都没有退出的地方^_^

作者: yixilan   发布时间: 2011-11-23

热门下载

更多