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

start [/forum/topic.php?desktop=1&fid=46&tid=1819628]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 350ms |

| 0 / 0 |
