Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выбор из столбца которого может не быть
|
|||
|---|---|---|---|
|
#18+
Добрый день, подскажите как выбрать данные из столбца таблицы которого может и не быть. В курсоре перебирается несколько таблиц данные из которых должны быть перезаписаны в одну общую таблицу, но не в каждой перебираемой таблице есть все необходимые столбцы. Cелект выдаёт ошибку, пробовал застраховаться так: insert into TableNew (col1,col2) select col1 ,case when exists (select 1 from syscolumns where id = object_Id('TableOld') and name = 'col2') then col2 else null end as col2 from TableOld Не помогает, пробовал динамический запрос: exec('SELECT (case when not exists (select 1 from syscolumns where id = object_Id('+'''+TableOld+'''+') and name = '+'''+col2+'''+') then col2 else null end) as col2 FROM TableOld') Не помогает, подскажите как быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 15:52 |
|
||
|
Выбор из столбца которого может не быть
|
|||
|---|---|---|---|
|
#18+
John__Smit, Проверка наличия столбца идёт на этапе парса, а не выполнения. Переводите в динамику всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 16:02 |
|
||
|
Выбор из столбца которого может не быть
|
|||
|---|---|---|---|
|
#18+
John__Smit, перебирайте в курсоре только те таблицы, где искомый столбец имеется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 16:03 |
|
||
|
Выбор из столбца которого может не быть
|
|||
|---|---|---|---|
|
#18+
John__Smit Добрый день, подскажите как выбрать данные из столбца таблицы которого может и не быть. В курсоре перебирается несколько таблиц данные из которых должны быть перезаписаны в одну общую таблицу, но не в каждой перебираемой таблице есть все необходимые столбцы. Cелект выдаёт ошибку, пробовал застраховаться так: insert into TableNew (col1,col2) select col1 ,case when exists (select 1 from syscolumns where id = object_Id('TableOld') and name = 'col2') then col2 else null end as col2 from TableOld Не помогает, пробовал динамический запрос: exec('SELECT (case when not exists (select 1 from syscolumns where id = object_Id('+'''+TableOld+'''+') and name = '+'''+col2+'''+') then col2 else null end) as col2 FROM TableOld') Не помогает, подскажите как быть. Динамически генерировать запрос на основе метаданных. Например, select с перечислением всех полей из случайной таблицы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 16:03 |
|
||
|
Выбор из столбца которого может не быть
|
|||
|---|---|---|---|
|
#18+
John__Smit, соберите свой запрос в полностью динамический sql и уже вызывайте собранный запрос. к примеру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2020, 16:07 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=40014407&tid=1685461]: |
0ms |
get settings: |
12ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
17ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 336ms |

| 0 / 0 |
