我正在尝试了解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 :='';
,字符串值就会从本地人窗口。
为什么在执行 buffer :='';
之前退出循环时,缓冲区的显示值会从Locals窗口消失?就好像变量已超出范围。
P.S。是否有配置设置会导致长值包含在“本地”窗口值单元格中?
谢谢
答案 0 :(得分:0)
这听起来像是调试器的错误。我一般建议跟进pgadmin电子邮件列表,并提醒开发人员注意这个问题。
我没有理由知道变量超出范围所以听起来像是调试器本身的错误。