|
|
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
Выполняю некий скрипт на SQL: Код: plaintext 1. 2. 3. пробую тоже самое, только с параметром: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 19:31 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
пробую тоже самое, только с параметром: Сильно ошибаетесь, совсем не то же самое. Код: plaintext Код: plaintext Какя тут ошибка? Та самая, которая написана. Временная таблица не найдена. Вы уверены, что doc_id=49 существует? Кстати, все три SQLEXEC можно легко объединить в один. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 20:49 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
стиль, который облегчает разработку Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 09:34 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
Дело в том, что при использовании параметра в сквозном запросе, на сервер будет посылаться команда вида: Код: plaintext 1. Решение: 1. Не используйет параметра: Вместо Код: plaintext Код: plaintext 1. 2. 3. 4. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 09:50 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
Aleksey-KДело в том, что при использовании параметра в сквозном запросе, на сервер будет посылаться команда вида: Код: plaintext 1. Моё решение было следующим: Код: plaintext 1. 2. 3. Почему этот вариант работает, а предыдущий нет? Проблема как бы решена, но вопрос всё равно открыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 10:32 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
Почему этот вариант работает, а предыдущий нет? Ну Aleksey-K же уже объяснил! Созданное в одном батче не видно в другом. Так как временная таблица при применении параметра создается внутри хранимой процедуры, то при выход из этой процедуры она уничтожается. Сказано же - объединяйте такие команды в один запрос и тогда и с параметром будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 10:40 |
|
||
|
Сквозной запрос с параметром
|
|||
|---|---|---|---|
|
#18+
Еще раз объясняю! Когда вы используете параметры, ваш запроса отсылается на сервер и выполняется не напрямую, как в первом варианте, а через вызов специальной хранимой процедуры sp_executesql, куда в качестве параметра передается сам запрос и ваш параметр. Ваш запрос создает временный объект (таблицу #CurDocsRefs), но областью ее определения является не коннект, как в первом варианте, а хранимая процедуры sp_executesql. Как только эта хранимая процедуры закончит работу, ваша временная таблица будет удалена. Локальные временный объеткы (которые начинаются с символа # ) "живут" до тех пор, пока код не выйдет из области их определения. Создали в коннекте - до закрытия коннекта. Создали в хранимой процедуре - до конца работы хранимой процедуры. Для того, чтобы в этом убедится, запустите SQL Prfiler и посмотрите, что уходит на сервер в первом и во втором случае. С уважением, Алексей P.S. Кстати, "проходящий" тут немного ошибается. Batch (пакет) тут не причем. Если я сначала создам в одном пакете временную таблицу (через одну команду SQLEXEC), то нормально могу ее использовать из других batch (из других SQLEXEC), но до тех пор пока не покину ее Scope - область определения. В данном случаем - коннект. Ну или, конечно явно ее не удалю (DROP...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 14:48 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=183&tid=1588697]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 376ms |

| 0 / 0 |
