powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая функция с динамическим sql-запросом
24 сообщений из 24, страница 1 из 1
Хранимая функция с динамическим sql-запросом
    #38744340
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Подскажите, куда копать?
Хочу написать хранимую функцию или что-то в этом роде, которая будет принимать несколько входящих параметров (например, несколько VARCHAR), и возвращать, допустим тоже VARCHAR (или sql_variant)
Но внутри, в коде функции необходимо использовать динамический sql (что-то вроде EXEC 'select fld from table')

Использовать написанную ХФ хотелось бы следующим образом:
select fld1, fld2, MyFunction(fld3, fld4) from table1
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744350
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazet,

есть же ограничения на T-SQL UDF - динамические запросы и побочные эффекты недопустимы.
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744368
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, я это понимаю, поэтому и спрашиваю, какие могут быть варианты? мб пользовательские агрегаты или что-то в этом роде?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744398
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы лучше скажите для чего вам там DSQL понадобился.
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744494
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему непременно функцию ? Вы уверены, что ХП не подходит ?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744506
Maxx_UA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSVА почему непременно функцию ? Вы уверены, что ХП не подходит ?

select fld1, fld2, MyFunction(fld3, fld4) from table1
nope :)
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744510
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxx_UA,

Это единственный способ получить нужный результат?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744576
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
без DSQL не обойтись
в данном случае передаваться параметром в ХФ именно название таблицы, из которой надо будет взять какое-нибудь значение
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744578
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetбез DSQL не обойтись
Это вы так решили или вам кто-то сказал ?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744581
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wlr-lMaxx_UA,

Это единственный способ получить нужный результат?
еще можно забомбить большой DSQL, который будет джойнить таблицы, инсертить это все во временную таблицу. и так для каждого кортежа исходного запроса
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744590
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glorybayazetбез DSQL не обойтись
Это вы так решили или вам кто-то сказал ?
подскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом
например, Лог Изменений:
"Дата""Транзакция""Где поменяли""Старое значение""Новое значение"11.09.2014 eargergrg Справочник1 Пупкин Сумкин10.09.2014 sdfgsdfgs Справочник2 Москва СПб
И вот к такому запросу нужно прикрутить еще какие-нибудь данные из Справочник1 и Справочник2
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744602
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetподскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом
И кто придумал такую схему данных ?

join Справочник1 on Справочник1.id = ЛогИзменений.id and "Где поменяли" = 'Справочник1'
join Справочник2 on Справочник2.id = ЛогИзменений.id and "Где поменяли" = 'Справочник2'
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744603
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetGloryпропущено...

Это вы так решили или вам кто-то сказал ?
подскажите более лучший вариант джойнить таблицы, имена которых можно извлечь только запросом


примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
select ...
from [Лог Изменений] l
left join [Справочник1] с1
on [Где поменяли] = 'Справочник1' and...

left join [Справочник2] с2
on [Где поменяли] = 'Справочник2' and...



Не очень производительно и не очень изящно, ну так и сама схема, эээ,...
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744607
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory,
его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных

а если справочников 5? все 5 прописать? а если 10? 20?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744610
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetа если справочников 5? все 5 прописать? а если 10? 20?
Даже если 100, то придется все прописать
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744615
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetGlory,
его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных

а если справочников 5? все 5 прописать? а если 10? 20?
можно же написать скрипт, который будет генерировать сами эти запросы
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744889
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShakillbayazetGlory,
его зовут 1С. И то, что я сейчас описываю - слегка упрощенная схема хранения данных

а если справочников 5? все 5 прописать? а если 10? 20?
можно же написать скрипт, который будет генерировать сами эти запросы

вооот. и я об этом, генерировать D-SQL
только получается, что задача-то типовая, подобные связи в 1С сплошь и рядом, хотелось бы иметь некий метод, в который можно было бы передавать входящим параметром имя таблицы, имя поля в этой таблице, значение которого хочется получить, еще какие-то параметры, а на выходе получать значение VARCHAR или SQL_VARIANT
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744891
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazet,

в 1С - эталон запросов на SQL. Это точно!
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38744895
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetтолько получается, что задача-то типовая, подобные связи в 1С сплошь и рядом, хотелось бы иметь некий метод, в который можно было бы передавать входящим параметром имя таблицы, имя поля в этой таблице, значение которого хочется получить, еще какие-то параметры, а на выходе получать значение VARCHAR или SQL_VARIANT
Ага, универсальная функция под все запросы ?

Напишите процедуру.
Что вас _обязывает_ писать функцию ?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38745224
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryНапишите процедуру.
Что вас _обязывает_ писать функцию ?
пока написана именно процедура, в ней запускается курсор по исходной таблице в котором формируются d-sql-запросы, результаты инсертятся во временную таблицу, а потом из этой временной таблицы и берется результирующий датасет

вот как раз и хотелось обойти это трудоемкое и немасштабируемое решение поимев некий метод, который можно было бы использовать как я описал в первом сообщении треда
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38745233
Jovanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazet,

Так и перепишите процедуру, зачем функция понадобилась?
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38745238
bayazet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jovannybayazet,

Так и перепишите процедуру, зачем функция понадобилась?
наверное, я не понимаю, что вы имеете ввиду под "перепишите"
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38745241
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetнаверное, я не понимаю, что вы имеете ввиду под "перепишите"
Чтобы она была менее трудоемкой и более масштабируемой
...
Рейтинг: 0 / 0
Хранимая функция с динамическим sql-запросом
    #38745251
Jovanny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bayazetнаверное, я не понимаю, что вы имеете ввиду под "перепишите"
Переделайте, сделайте рефакторинг, модифицируйте, измените текст. Не знаю, как понятнее выразиться.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая функция с динамическим sql-запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]