Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 локальная процедура  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
столкнулся с такой неожиданной проблемой.
Есть несколько процедур, в которых есть мелкий код, который вызывается 3-4 раза в разных местах. В каждой процедуре свой.
На Делфи я бы просто внутри процедуры сделал бы локальную функцию и был бы счастлив.
А на SQL Server как с этим локальным барахлом поступать? Кто как такие случаи "оформляет"? Болтаются в общем списке функций/процедур с особым стилем наименования или есть еще варианты?
1 окт 14, 09:27    [16642169]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
minva,

в принципе есть временные процедуры (имя начинается с #).
Но я бы не стал заморачиваться
1 окт 14, 09:31    [16642191]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
aleks2
Guest
minva
На Делфи я бы просто внутри процедуры сделал бы локальную функцию и был бы счастлив.

А никак тебе не светит.
Либо, если сможешь, выносишь в глобальную процедуру.
1 окт 14, 10:23    [16642446]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Попробуйте результат кода сохранить во временную таблицу. Затем используйте не запрос, а эту таблицу.
1 окт 14, 11:18    [16642963]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1213
Владислав Колосов, так этот результат в разных местах разный будет. Для того и запиливается кусок подпрограммы, чтоб передать параметры и не копипастить код. И потом там действия чисто расчетные - скалярные, а не табличные
1 окт 14, 11:47    [16643230]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31993
minva
А на SQL Server как с этим локальным барахлом поступать? Кто как такие случаи "оформляет"? Болтаются в общем списке функций/процедур с особым стилем наименования или есть еще варианты?
Такого в сиквеле нету.
Ближайшим аналогом могли бы быть CTE, но их можно использовать в одном запросе, сразу после определения.
Так что может быть ещё вариант - временные таблицы.

minva
Владислав Колосов, так этот результат в разных местах разный будет. Для того и запиливается кусок подпрограммы, чтоб передать параметры и не копипастить код. И потом там действия чисто расчетные - скалярные, а не табличные
Может, подумать про общую структуру кода. Ориентация к операциям над множествами подталкивает к тому, что бы не повторять многократно одинаковые скалярные вычисления над набором скалярных данных, а сделать это вычисление один раз с этим набором как с множеством.
1 окт 14, 11:55    [16643297]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
minva
скоторых есть мелкий код,

в общем то аналогично - для можно написать функцию/процедуру которая вызывается в главной
зависит от кода
но может и ухудшить время выполнения
1 окт 14, 11:56    [16643305]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Временная процедура, как вам уже подсказал многоуважаемый iap


exec('create procedure #tttt .....')

exec #tttt ...
...
exec #tttt ...
...
exec #tttt ...
...
exec #tttt ...

exec('drop procedure #tttt')
1 окт 14, 11:58    [16643320]     Ответить | Цитировать Сообщить модератору
 Re: локальная процедура  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
А можно повторяемый код записать в строку и просто многократно вызывать посредством sp_executesql, причем с разными параметрами.
1 окт 14, 12:04    [16643382]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить