
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.10.2002, 12:56:50
|
|||
|---|---|---|---|
Макроподстановка в хранимой процедуре |
|||
|
#18+
А вот скажите, реально ли внутри хранимой процедуры сделать SELECT с условием, изменяющимся динамически в зависимости от передаваемого параметра? А то вынес весь "паровоз" длинного SQL-запроса в ХП, а потом обнаружил, что он у меня строится динамически в зависимости от прав доступа конкретного юзера. Т.е. иногда в запрос может попадать дополнительное условие типа CHARINDEX(ZAVOD,'EEJ')>0 или еще что-то. Похоже придется перетаскивать "паровоз" обратно в PHP :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 12:58:52
|
|||
|---|---|---|---|
|
|||
Макроподстановка в хранимой процедуре |
|||
|
#18+
легко. см.BOL - CASE и EXEC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 13:00:29
|
|||
|---|---|---|---|
Макроподстановка в хранимой процедуре |
|||
|
#18+
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 13:11:53
|
|||
|---|---|---|---|
|
|||
Макроподстановка в хранимой процедуре |
|||
|
#18+
Такое сделать можно, но придется в хранимой процедуре формировать строку SQL запроса динамически в зависимости от ваших условий, а когда строка сформирована вызывать Exec(@SQLStr). Кстати, в данной строке придется делать вставку полученного результата в какую-нибудь временную таблицу, из которой потом и селектить необходимые данный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 13:56:41
|
|||
|---|---|---|---|
Макроподстановка в хранимой процедуре |
|||
|
#18+
Кстати, в данной строке придется делать вставку полученного результата в какую-нибудь временную таблицу, из которой потом и селектить необходимые данный. А зачем? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 14:48:08
|
|||
|---|---|---|---|
Макроподстановка в хранимой процедуре |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 14:48:21
|
|||
|---|---|---|---|
Макроподстановка в хранимой процедуре |
|||
|
#18+
если ветвление по условиям небольшое, то лучше сделать наверно через IF'ы или CASE. Если условие тяжело строить подобным образом - тогда уже предложенный вариант: EXEC или sp_executesql. Временная таблица вряд ли понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2002, 15:03:46
|
|||
|---|---|---|---|
|
|||
Макроподстановка в хранимой процедуре |
|||
|
#18+
2 SergSuper: Это в случае если автору нужно просто вывести результат запроса (что врядли, ведь для этого можно и не городить процедуру). А если необходимо использовать результат полученного запроса для каких-либо операций внутри процедуры (типа Select Into или при создании курсоров), вот тут-то и необходима будет временная таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1819628]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 298ms |

| 0 / 0 |
