2013-08-14 3 views
2

Предположим, у меня есть таблица имен пользовательских столбцов, у всех есть шаблон COL ##, где ## - любое целое число. Таким образом, типичный запрос будет:Oracle, динамически определить имя столбца

select COL12 from MyCustomTable; 

Так в другой таблице, у меня есть все эти целые числа, и я хотел бы создать запрос, используя таблицу целых чисел для построения динамического запроса в MyCustomTable.

Что-то вроде:

select 'COL' || (select colId from IdTable where Id = 12) from MyCustomTable; 

Но вместо того, чтобы просто вернув строку «COL12» для каждой строки, возвращает фактические значения, определенные по имени столбца COL12.

Не беспокойтесь о моих общих проблемах :) Я просто хотел бы знать, если я могу сделать это из окна SQLDeveloper непосредственно без написания кода/процедуры/функции и т.д.

ответ

2

Очевидные и абсолютно Небезопасным способом сделать это будет использование заявления EXECUTE IMMEDIATE.

Другой должен использовать команду SPOOL для вывода результатов во временный файл, затем установить SPOOL OFF и выполнить этот файл с помощью директивы @.

+0

Я видел EXECUTE IMMEDIATE в некоторых других поисках, которые я делал, но надеялся на что-то еще. Не рассматривался вариант SPOOL. Принимаю, так как я считаю, что оба они являются хорошими ответами. – Rake36

Смежные вопросы