
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.11.2002, 15:05:11
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#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:10:13
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
В динамический запрос надо передавать не названия переменных, а значения переменных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 15:15:56
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
2>fima Я это прекрасно понимаю, но как это сделать в моем примере??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 15:26:25
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 15:36:18
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
2>fima Но мне нужно передать значение переменной @1 которая равна 5, а не значение переменной @i которая равна 1??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 15:49:40
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 16:17:05
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
2>fima Дело в том что я привел пример с 30 переменными, а на самом деле их гораздо больше, к тому же после вызова процедуры выполняются другие операции с данными которые возвращает функция - поэтому то я и хочу попробовать записать вызов процедуры в одну строку, а не писать сто одинаковых строк. Но за поддержание диалога спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
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+
понятия не имею, я ж Вашу задачу не знаю, я пока обхожусь без курсоров. Может и у Вас можно без него, а может нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 18:46:59
|
|||
|---|---|---|---|
|
|||
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
BOL: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2002, 22:17:10
|
|||
|---|---|---|---|
|
|||
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
В консерватории что-то подправить надо. У вас ошибка дизайна и надо не сражаться с 30 переменными, а изменить подход. Советую привести более подробное описание задачи и в 99% случаев, я уверен, удастся обойтись JOIN. Курсоров вообще следует избегать как бешеных собак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2002, 14:01:12
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
Курсоров вообще следует избегать как бешеных собак. 2>Gobzo Kobler Может пояснишь почему??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2002, 18:59:48
|
|||
|---|---|---|---|
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
Наверное потому, что скрипт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Работает в несколько раз медленне, чем Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2002, 16:55:49
|
|||
|---|---|---|---|
|
|||
Как в динамический запрос запихнуть переменную? |
|||
|
#18+
Урий: Потому, что их надо декларировать, открывать, закрывать и освобождать из памяти. За тебя это никто не сделает, следовательно есть место для ошибки. Это занимает время и ресурсы сервера, следовательно замедляет обработку. Код: plaintext 1. 2. 3. 4. 5. работает гораздо быстрее соответствующего курсора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1818978]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
9ms |
get forum data: |
8ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 391ms |

| 0 / 0 |
