|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, куда копать? Хочу написать хранимую функцию или что-то в этом роде, которая будет принимать несколько входящих параметров (например, несколько VARCHAR), и возвращать, допустим тоже VARCHAR (или sql_variant) Но внутри, в коде функции необходимо использовать динамический sql (что-то вроде EXEC 'select fld from table') Использовать написанную ХФ хотелось бы следующим образом: select fld1, fld2, MyFunction(fld3, fld4) from table1 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 15:28 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazet, есть же ограничения на T-SQL UDF - динамические запросы и побочные эффекты недопустимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 15:35 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
да, я это понимаю, поэтому и спрашиваю, какие могут быть варианты? мб пользовательские агрегаты или что-то в этом роде? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 15:47 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Вы лучше скажите для чего вам там DSQL понадобился. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 16:09 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
А почему непременно функцию ? Вы уверены, что ХП не подходит ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 17:11 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
LSVА почему непременно функцию ? Вы уверены, что ХП не подходит ? select fld1, fld2, MyFunction(fld3, fld4) from table1 nope :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 17:17 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Maxx_UA, Это единственный способ получить нужный результат? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 17:20 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
без DSQL не обойтись в данном случае передаваться параметром в ХФ именно название таблицы, из которой надо будет взять какое-нибудь значение ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:11 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetбез DSQL не обойтись Это вы так решили или вам кто-то сказал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:12 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Wlr-lMaxx_UA, Это единственный способ получить нужный результат? еще можно забомбить большой DSQL, который будет джойнить таблицы, инсертить это все во временную таблицу. и так для каждого кортежа исходного запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:14 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Glorybayazetбез DSQL не обойтись Это вы так решили или вам кто-то сказал ? подскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом например, Лог Изменений: "Дата""Транзакция""Где поменяли""Старое значение""Новое значение"11.09.2014 eargergrg Справочник1 Пупкин Сумкин10.09.2014 sdfgsdfgs Справочник2 Москва СПб И вот к такому запросу нужно прикрутить еще какие-нибудь данные из Справочник1 и Справочник2 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:22 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetподскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом И кто придумал такую схему данных ? join Справочник1 on Справочник1.id = ЛогИзменений.id and "Где поменяли" = 'Справочник1' join Справочник2 on Справочник2.id = ЛогИзменений.id and "Где поменяли" = 'Справочник2' ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:32 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetGloryпропущено... Это вы так решили или вам кто-то сказал ? подскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом примерно так Код: sql 1. 2. 3. 4. 5. 6. 7.
Не очень производительно и не очень изящно, ну так и сама схема, эээ,... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:33 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Glory, его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных а если справочников 5? все 5 прописать? а если 10? 20? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:35 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetа если справочников 5? все 5 прописать? а если 10? 20? Даже если 100, то придется все прописать ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:37 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetGlory, его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных а если справочников 5? все 5 прописать? а если 10? 20? можно же написать скрипт, который будет генерировать сами эти запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2014, 18:46 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
ShakillbayazetGlory, его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных а если справочников 5? все 5 прописать? а если 10? 20? можно же написать скрипт, который будет генерировать сами эти запросы вооот. и я об этом, генерировать D-SQL только получается, что задача-то типовая, подобные связи в 1С сплошь и рядом, хотелось бы иметь некий метод, в который можно было бы передавать входящим параметром имя таблицы, имя поля в этой таблице, значение которого хочется получить, еще какие-то параметры, а на выходе получать значение VARCHAR или SQL_VARIANT ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 10:05 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazet, в 1С - эталон запросов на SQL. Это точно! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 10:07 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetтолько получается, что задача-то типовая, подобные связи в 1С сплошь и рядом, хотелось бы иметь некий метод, в который можно было бы передавать входящим параметром имя таблицы, имя поля в этой таблице, значение которого хочется получить, еще какие-то параметры, а на выходе получать значение VARCHAR или SQL_VARIANT Ага, универсальная функция под все запросы ? Напишите процедуру. Что вас _обязывает_ писать функцию ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 10:09 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
GloryНапишите процедуру. Что вас _обязывает_ писать функцию ? пока написана именно процедура, в ней запускается курсор по исходной таблице в котором формируются d-sql-запросы, результаты инсертятся во временную таблицу, а потом из этой временной таблицы и берется результирующий датасет вот как раз и хотелось обойти это трудоемкое и немасштабируемое решение поимев некий метод, который можно было бы использовать как я описал в первом сообщении треда ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:00 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazet, Так и перепишите процедуру, зачем функция понадобилась? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:05 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
Jovannybayazet, Так и перепишите процедуру, зачем функция понадобилась? наверное, я не понимаю, что вы имеете ввиду под "перепишите" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:07 |
|
Хранимая функция с динамическим sql-запросом
|
|||
---|---|---|---|
#18+
bayazetнаверное, я не понимаю, что вы имеете ввиду под "перепишите" Чтобы она была менее трудоемкой и более масштабируемой ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2014, 15:08 |
|
|
start [/forum/topic.php?fid=46&msg=38744615&tid=1700748]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
334ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 738ms |
0 / 0 |