我知道如何从oracle sql中的表中获取column_names。
我的问题是,是否可以在查询中实际使用这些column_names?
我可以得到这样的列名:
SELECT column_name FROM user_tab_cols
WHERE table_name = 'MY_TABLE'
但它只返回一个我无法做任何事情的列名列表。
是否可以在查询中使用它们?
我需要查询表中的一堆列,并且需要动态获取列名,以便它们不会在那里进行硬编码...
任何提示?
答案 0 :(得分:1)
您不能只使用原始SQL,必须使用PL / SQL。
所以你必须使用存储过程并执行类似的操作:
SELECT 'SELECT '||LISTAGG(COLUMN_NAME,',')||' FROM /* your condition hew */' INTO myQuery FROM USER_TAB_COLS WHERE table_name = 'OFFER';
然后使用OPEN ... LOOP
检索您的数据。
这只是一个建议,我发现它非常复杂!
答案 1 :(得分:0)
您必须创建一个动态sql语句,并在您生成的sql语句中使用EXECUTE IMMEDIATE调用。