powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Макроподстановка в хранимой процедуре
8 сообщений из 8, страница 1 из 1
Макроподстановка в хранимой процедуре
    #32057921
Maksim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот скажите, реально ли внутри хранимой процедуры сделать SELECT с условием, изменяющимся динамически в зависимости от передаваемого параметра? А то вынес весь "паровоз" длинного SQL-запроса в ХП, а потом обнаружил, что он у меня строится динамически в зависимости от прав доступа конкретного юзера. Т.е. иногда в запрос может попадать дополнительное условие типа CHARINDEX(ZAVOD,'EEJ')>0 или еще что-то.

Похоже придется перетаскивать "паровоз" обратно в PHP :(
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32057923
ms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ms
Гость
легко. см.BOL - CASE и EXEC
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32057924
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32057931
Corsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое сделать можно, но придется в хранимой процедуре формировать строку SQL запроса динамически в зависимости от ваших условий, а когда строка сформирована вызывать Exec(@SQLStr). Кстати, в данной строке придется делать вставку полученного результата в какую-нибудь временную таблицу, из которой потом и селектить необходимые данный.
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32057954
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в данной строке придется делать вставку полученного результата в какую-нибудь временную таблицу, из которой потом и селектить необходимые данный.
А зачем?
Код: plaintext
1.
2.
3.
4.
5.
6.
create proc #p
as
declare @s varchar( 99 )
set @s='select * from sysobjects'
exec(@s)
go
#p
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32057999
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32058001
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ветвление по условиям небольшое, то лучше сделать наверно через IF'ы или CASE. Если условие тяжело строить подобным образом - тогда уже предложенный вариант: EXEC или sp_executesql. Временная таблица вряд ли понадобится.
...
Рейтинг: 0 / 0
Макроподстановка в хранимой процедуре
    #32058019
Corsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 SergSuper:
Это в случае если автору нужно просто вывести результат запроса (что врядли, ведь для этого можно и не городить процедуру). А если необходимо использовать результат полученного запроса для каких-либо операций внутри процедуры (типа Select Into или при создании курсоров), вот тут-то и необходима будет временная таблица.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Макроподстановка в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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