【发布时间】:2014-04-26 04:48:05
【问题描述】:
我以类似的方式创建了一个带有 select 的 for in 循环:
for i in (select column_name from all_tab_columns where table_name = '')
strinvar := i.column_name
这段代码在 plsql developer 中执行时会返回: 第 1 列 第 2 列 等等
当我尝试在 sqlplus 中执行此操作时,我没有得到任何结果。我还尝试在 sqlplus 中执行此操作并将结果打印到如下文件中:
for i in (select column_name from all_tab_columns where table_name = '')
strinvar := i.column_name
utl_file.put_line(Filehandle, strinvar);
但它没有打印任何东西。我错过了什么吗? 最后,另一个问题与从变量中获取 select 语句中的值有关:
declare
tab_name varchar2(100) := 'Test';
Begin
for i in (select column_name from all_tab_columns where table_name = tab_name )
strinvar := i.column_name
utl_file.put_line(Filehandle, strinvar);
我可以有这样的东西还是应该为表名创建一个游标并从游标中获取名称?
你能给我建议吗? 最好的祝福 乔治乔治欧
【问题讨论】:
-
除了您的代码无效 - 缺少
loop和end loop,缺少分号等,您似乎正在寻找一个名称为null的表格 - 假设您是实际上在两个客户端中运行相同(有效)的代码,您是作为同一个用户连接的,还是至少作为两个可以访问您为其获取列的表的用户连接的用户? -
我上面写的代码只是伪代码,它不会编译,因为我不在工作中查看实际代码。同样在查询中,我记得我尝试使用 select column_name from all_tab_columns where table_name = ''and owner = user ,这也没有任何区别。我的问题是我是否可以在 sqlplus 的 stmt 中执行 for 以及是否可以将表名作为变量