0

我正在尝试了解 pgAdmin 调试器,并且对 PostgreSQL 相当陌生。我不知道我看到的行为是因为我犯了一个错误,还是仅仅因为调试器的限制。

在我的函数顶部,我声明了两个变量:

   declare tuple record;
   declare buffer text;

在我的函数主体中,我试图迭代临时表 TT_CALENDAR 中的行,因此可以在 Locals 窗口中检查临时表的内容:

for tuple in
  select startdate, enddate from TT_CALENDAR
  loop
   buffer := concat(buffer, tuple.startdate::text, tuple.enddate::text,'|');
  end loop;

 buffer :='';

断点设置在buffer := concat(...和 处buffer :='';,程序执行按预期停止在那里,但是一旦我们退出循环并到达buffer :='';字符串值,就会从 Locals 窗口中消失。

为什么当我们在执行之前 buffer :='';退出循环时,缓冲区显示的值会从 Locals 窗口中消失?就好像变量超出了范围。

PS 是否存在会导致长值包含在 Locals 窗口单元格中的配置设置?

谢谢

4

1 回答 1

0

这听起来确实像调试器的错误。我通常会建议跟进 pgadmin 电子邮件列表并提醒开发人员注意这个问题。

我没有理由知道变量会超出范围,所以在我看来,这听起来像是调试器本身的一个错误。

于 2013-05-01T06:19:51.413 回答