Oracle - 在查询中使用列名

时间:2014-02-10 22:58:47

标签: sql oracle

我知道如何从oracle sql中的表中获取column_names。

我的问题是,是否可以在查询中实际使用这些column_names?

我可以得到这样的列名:

SELECT column_name FROM user_tab_cols
WHERE table_name = 'MY_TABLE'

但它只返回一个我无法做任何事情的列名列表。

是否可以在查询中使用它们?

我需要查询表中的一堆列,并且需要动态获取列名,以便它们不会在那里进行硬编码...

任何提示?

2 个答案:

答案 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调用。