最近有很多4gl要调试,其中大部分都使用了很多临时表。使用“交互式”调试器,我可以在插入到tmp_table后中断。我想在tmp_table上做一个select *查询,这在交互式调试器中是否可能?
或者如何在第三方sql客户端上执行此操作?一个简单的 从tmp_table 中选择* 会导致错误:指定的表(tmp_table)不在数据库中。 (状态:S0002,原生代码:FFFFFF32)
答案 0 :(得分:1)
与Jonathan描述的类似方法,在之前的工作场所,我们有一个名为FUNCTION dump_temp_table(tablename)
的库函数,它将一个参数作为参数,并将该表卸载到文件tablename.unl。您只需使用call命令从调试器调用该函数,并将您感兴趣的表名作为参数传递
使用Genero我很快就可以使用以下内容重新创建......
FUNCTION dump_temp_table(tablename)
DEFINE tablename STRING
DEFINE filename STRING
DEFINE sql STRING
LET sql = SFMT("SELECT * FROM %1",tablename)
LET filename = SFMT("%1.unl", tablename)
UNLOAD TO filename sql
END FUNCTION
...如果使用4gl,您应该能够提出类似的东西(用CHAR等替换现代化的Genero语法,如STRING和SFMT)