|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Динамические запросы вещь удобная, но их формирование и дальнейшая работа внутри функции нереализуема (или нет?), т.к. "Выполнение запроса внутри функции может привести к нарушению основного контракта UDF - не изменять состояния базы данных. Ничто не мешает написать DROP внутри EXEC'a, что приведет к нарушению этого контракта." Собственно есть один вопрос: можно ли сформировать динамический запрос и запустить его внутри функции без использования EXEC? Приму в дар любые варианты. По сути запрос простой и выглядит примерно так Код: sql 1.
, где @column - имя поля, которое меняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 21:14 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig, а) чтобы выполнить динамический запрос нужно запустить процедуру, б) процедуры внутри UDF функций не поддерживаются (за очень специфичным исключением) в) ещё можно через свою CLR конечно. впросы ко время исправления внизу? написал скрипт машины времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2021, 21:47 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chigПриму в дар любые варианты.Наймите архитектора, который вам расскажет, что надо или можно делать, а что нет. Можно делать, когда фантазировать надоест. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 03:28 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
vikkiv ol_chig, а) чтобы выполнить динамический запрос нужно запустить процедуру ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 10:01 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig Динамические запросы вещь удобная, но их формирование и дальнейшая работа внутри функции нереализуема (или нет?), т.к. "Выполнение запроса внутри функции может привести к нарушению основного контракта UDF - не изменять состояния базы данных. Ничто не мешает написать DROP внутри EXEC'a, что приведет к нарушению этого контракта." Собственно есть один вопрос: можно ли сформировать динамический запрос и запустить его внутри функции без использования EXEC? Приму в дар любые варианты. По сути запрос простой и выглядит примерно так Код: sql 1.
, где @column - имя поля, которое меняется. 1. Количество полей в таблице априорно ограничено. 2. Код: sql 1. 2. 3.
3. дерзайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 10:31 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
iap vikkiv ol_chig, а) чтобы выполнить динамический запрос нужно запустить процедуру Сейчас я в переменную собираю запрос и выполняю его через EXEC, который нельзя использовать внутри функции. Подскажите как еще? aleks222 1. Количество полей в таблице априорно ограничено. 2. Код: sql 1. 2. 3.
3. дерзайте. Совет интересный, жаль в таблице 695 полей, придется отбирать все возможные варианты и писать много строчек кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 11:40 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Касательно перебора полей можно это все нагенерить как бы... но в рамках функции это все равно не обернуть Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 15:14 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Sergey Syrovatchenko, тем не менее спасибо за пример, возможно где-то пригодится ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 15:54 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig Sergey Syrovatchenko, тем не менее спасибо за пример, возможно где-то пригодится в другой работе, например ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 16:01 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Ролг Хупин, НА другой... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 19:43 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Совет интересный, жаль в таблице 695 полейБыл душевнобольной разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 21:17 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
uaggster, Наверное здесь приоритет на значимости немного другого синтаксиса. Общество любителей литературы и поэзии чуть-чуть в другом месте. L_argo, Может опыта широты задач не хватает? Есть достаточно ситуаций когда такой подход вполне оправдан, напр. у нас в первичном Stage из CSV и прочих бывает заливается и побольше полей.. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 21:52 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
L_argo Совет интересный, жаль в таблице 695 полей Тема вообще бред. Попытка скомпенсировать недостаток знаний бурным воображением. Отсюда "космические" решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2021, 22:39 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
Владислав Колосов L_argo пропущено... Был душевнобольной разработчик. Тема вообще бред. Попытка скомпенсировать недостаток знаний бурным воображением. Отсюда "космические" решения. Таблица является справочным хранилищем, где есть поле, указывающее на вид аналитики. Ее проектированием занимался не один душевнобольной разработчик, а целая компания, которая неплохо продает свой продукт. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 09:42 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig Динамические запросы вещь удобная, но их формирование и дальнейшая работа внутри функции нереализуема (или нет?) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 11:37 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig Ее проектированием занимался не один душевнобольной разработчик, а целая компания, которая неплохо продает свой продукт. Нужно иметь либо серьезные основания, либо низкую квалификацию, чтобы делать таблицу с таким количеством столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 12:13 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig, ваш разработчик сделал удобно для себя (я не уверен в этом) , но неудобно для вас - для потребителя данных. Задайте ему вопрос, каким он видит эффективное обращение к его таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 12:29 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
.Евгений, Не сильно разумно сваливать всё на кого-то, есть достаточно вполне приемлемых решений с собственными генераторами запросов на основе метаданных+модель и со своей встроенной специфичной логикой в зависимости от требований, у них свой фэн-шуй и приоритеты отличные от его понимания разработчиками баз данных. Напр. у нас рисковые не агрегируемые метрики за 700 полей из внешних (дорогих) систем могут вполне легко улететь.. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 13:11 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
vikkiv, Я не говорю, что 695 полей делать неправильно, нельзя или глупо. Это отдельный вопрос, который обсуждать как минимум рано. Я говорю о том, что провайдер данных (с моей точки зрения) должен не просто нагенерить их тем или иным способом, но представить их так, чтобы потребителю этих данных было удобно их использовать . Когда потребитель данных обращается к третьей стороне для преобразования этих данных, то данные, очевидно, не представлены в удобном для него виде. Возможно, это задача ETL - если провайдер по каким-то причинам не может или не хочет дать к ним удобный доступ. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2021, 13:23 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig, если работать с порядковым номером поля, то можно немного короче: select choose(@num,column1,column2,...) from table ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 01:24 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
HornetBlack ol_chig, если работать с порядковым номером поля, то можно немного короче: select choose(@num,column1,column2,...) from table Данная конструкция позволит по номеру определить имя поле, которое мне и так известно. Может я не так понял и из этого нужно вырулить куда-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 12:47 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig, это же не динамический запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 14:11 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
HornetBlack ol_chig, если работать с порядковым номером поля, то можно немного короче: select choose(@num,column1,column2,...) from table нельзя так делать тип данных, возвращаемый choose, не зависит от первого параметра https://docs.microsoft.com/en-us/sql/t-sql/functions/logical-functions-choose-transact-sql?view=sql-server-ver15 Return Types Returns the data type with the highest precedence from the set of types passed to the function Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 14:18 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
msLex HornetBlack ol_chig, [/src] хотя если сделать так Код: sql 1.
то что-то можно будет сделать, нужно учесть формат каждого поля и написать правильный конверт. Опять же костыль обретает вселенский масштаб в скобках choose и если каждый из 700 полей переводить в varchar, то на сколько быстро это все будет работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 14:42 |
|
Есть ли альтернатива динамическому запросу внутри функции?
|
|||
---|---|---|---|
#18+
ol_chig, тогда уж лучше sql_variant, хотя бы сохранятся данные об исходном типе Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 14:48 |
|
|
start [/forum/topic.php?fid=46&msg=40044203&tid=1685057]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 242ms |
0 / 0 |