|
|
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
К примеру есть 30 переменных названных в порядке возростания (@1, @2, @3 ....) и их нужно последовательно передать в хранимую процедуру ( exec sp_tmp @1 ). Я пишу цикл в котором использую динамический запрос: declare @i int, @sql nchar(15), @1 int set @i=1 set @1=5 while @i<=30 begin set @sql='exec sp_tmp @' + cast(@i as nchar(2)) exec (@sql) set @i=@i+1 end В ответ получаю сообщения: Server: Msg 137, Level 15, State 2, Line 1 Must declare the variable '@1'. Server: Msg 137, Level 15, State 2, Line 1 Must declare the variable '@2'. Server: Msg 137, Level 15, State 2, Line 1 Must declare the variable '@3'..... ........ Выходит что не видит он моих переменных. Что сделать чтобы динамический запрос видел мои переменные или как их передать в него по другому. (но только именно в цикле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:05:11 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
В динамический запрос надо передавать не названия переменных, а значения переменных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:10:13 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
2>fima Я это прекрасно понимаю, но как это сделать в моем примере??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:15:56 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:26:25 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
2>fima Но мне нужно передать значение переменной @1 которая равна 5, а не значение переменной @i которая равна 1??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:36:18 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 15:49:40 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
2>fima Дело в том что я привел пример с 30 переменными, а на самом деле их гораздо больше, к тому же после вызова процедуры выполняются другие операции с данными которые возвращает функция - поэтому то я и хочу попробовать записать вызов процедуры в одну строку, а не писать сто одинаковых строк. Но за поддержание диалога спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 16:17:05 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
ну тогда записывайте значения не в переменные а в таблицу, и ходите по ней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 16:20:36 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Дело в том, что данные в переменные попадают из курсора, а способа вставить из курсора данные прямо во временную таблицу без использования переменных я не нашел. Может знаешь другие варианты??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 16:38:39 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
из курсора не знаю, но можно поробовать без курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 17:14:22 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Каким образом??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 17:21:59 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
понятия не имею, я ж Вашу задачу не знаю, я пока обхожусь без курсоров. Может и у Вас можно без него, а может нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 17:30:33 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
BOL: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 18:46:59 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
В консерватории что-то подправить надо. У вас ошибка дизайна и надо не сражаться с 30 переменными, а изменить подход. Советую привести более подробное описание задачи и в 99% случаев, я уверен, удастся обойтись JOIN. Курсоров вообще следует избегать как бешеных собак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 22:17:10 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Курсоров вообще следует избегать как бешеных собак. 2>Gobzo Kobler Может пояснишь почему??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2002, 14:01:12 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Наверное потому, что скрипт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Работает в несколько раз медленне, чем Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2002, 18:59:48 |
|
||
|
Как в динамический запрос запихнуть переменную?
|
|||
|---|---|---|---|
|
#18+
Урий: Потому, что их надо декларировать, открывать, закрывать и освобождать из памяти. За тебя это никто не сделает, следовательно есть место для ошибки. Это занимает время и ресурсы сервера, следовательно замедляет обработку. Код: plaintext 1. 2. 3. 4. 5. работает гораздо быстрее соответствующего курсора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2002, 16:55:49 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1818978]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 315ms |

| 0 / 0 |
