Как я могу динамически изменять заголовки столбцов в SQL?

#sql #relational-database #db2-luw

#sql #реляционная база данных #db2-luw

Вопрос:

У меня есть 2 таблицы.

 UI_COMPONENT
UI_ID   LABEL_ID    UI_Name
01      Label1      Custom_Name
02      Label2      Random_text
03      Label3      Dummy_Label
 

Это означает, что на странице html будет 3 текстовых поля, которые будут иметь такие метки, как Custom_Name, Random_text и Dummy_Label.
Пример:

Custom_Name: ___________________

Random_text: ___________________

Dummy_Label: ___________________

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

 UI_COMPONENT_VALUES:
ID      Label1      Label2      Label3
111     John        Doe         Millers
222     David                   Gabriel
 

Администратор имеет доступ к переименованию ярлыков UI_COMPONENT.
Мне нужно создать представление, в котором я могу отображать значения из UI_COMPONENT_VALUES с динамическими заголовками.
или, по крайней мере, можете ли вы помочь мне с SQL-запросом, который извлекает данные указанным ниже способом?

Ожидаемый результат:

 UI_COMPONENT_VALUES_VIEW:
ID      Custom_Name     Random_text     Dummy_Label
111     John            Doe             Millers
222     David                           Gabriel
 

Комментарии:

1. Для этого вам нужен динамический SQL (я думаю).

2. К сожалению, имена столбцов представления являются частью DDL, что означает, что для его изменения вам необходимо выполнить инструкцию DDL. Второй подход, уже упомянутый @TimBiegeleisen, заключается в динамической генерации скрипта. Но это означает, что вы не можете сделать это через view, это должна быть хранимая процедура.

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