|
Выбор из столбца которого может не быть
|
|||
---|---|---|---|
#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: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 160ms |
0 / 0 |