Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
Подскажите, как можно выполнить для каждой строки набора данных скрипт, который генерируется на лету. Если бы была функция, то CROSS APPLY подошел, но ситуация иная: есть список таблиц из базы, и генерируемый скрипт (текст), который для каждой строки(таблицы) считает количество строк в ней. SELECT SCHEMA_NAME(SCHEMA_ID) + '.' + o.name as table_name, 'Select ''' + SCHEMA_NAME(SCHEMA_ID) + '.' + o.name + ''' as DBName, count(*) as Count From ' + SCHEMA_NAME(SCHEMA_ID) + '.' + o.name + ';' AS ' Script generator' FROM sys.objects o WHERE o.[type] = 'U' ORDER BY SCHEMA_NAME(o.schema_id), o.name; Спустя время я додумался взять выдачу кода выше (поле Script generator), поставить UNION в конце каждой строки и запустить снова. Норм. Но хочется знать как одним запросом это сделать. Курсор/цикл какой-нибудь.. или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 19:24 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
Pasha4Спустя время я додумался взять выдачу кода выше (поле Script generator), поставить UNION в конце каждой строки и запустить снова. Норм. Но хочется знать как одним запросом это сделать. Курсор/цикл какой-нибудь.. или как?Положить полученное в переменную, и выполнить командой EXEC() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 20:09 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
Pasha4, ну а чем не подходит курсор? Условия задачи не понятны. Поясните... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 20:12 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
Pasha4, если я правильно понял, то стоит задача вернуть список таблиц и кол-во записей в них см тут: https://blog.sqlauthority.com/2017/05/25/sql-server-simple-query-list-size-table-row-counts/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 20:24 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
ms_forEachTable ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 03:26 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
для такого частного случая действительно наверное простейший вариант пойти путём предложенным SIMPLicity_ типа (что первое нагуглилось): Код: sql 1. 2. 3. 4. или то что Profiler перехватывает при выполнении отчёта "Disk Usage by Table" в SSMS Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. для более сложных вариантов например для каждой строки свой скрипт то через скалярную функцию (в которой обычно процедуру не вызвать, за искл. нескольких специальных) так что только которая CLR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 04:46 |
|
||
|
выполнить генерируемый на лету скрипт к каждой строке набора данных
|
|||
|---|---|---|---|
|
#18+
..что в принципе упрощается в Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2019, 05:03 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1687442]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 482ms |

| 0 / 0 |
