|
Контекст dynamic sql запроса в процедуре!
|
|||
---|---|---|---|
#18+
Добрый день! Есть интересный случай в SQL-процедурине. Прошу проконсультировать. Ситуация следующая: Есть процедура на боевом сервере А (ASE-12.5.4), которая исправно работает.Но перенести эту процедуру на другой сервер не получается из-за ошибки синтаксиса! В теле процедуры объявлена переменная. Внутри dynamic-sql запроса, ей присваивается значение. Затем, эта переменная используется в теле процедуры. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
По документации у динамически исполняемого запроса и процедуры разные контексты, но переменная @min_br все равно передается!!! И работает это только на сервере А. Сколько я не пытался применить эту процедуру на других серверах - нигде она не отрабатывает. Мб есть какие-нить параметры ASE для dynamic sql? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2012, 15:46 |
|
Контекст dynamic sql запроса в процедуре!
|
|||
---|---|---|---|
#18+
типо ап! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2012, 19:16 |
|
Контекст dynamic sql запроса в процедуре!
|
|||
---|---|---|---|
#18+
fatumatorно переменная @min_br все равно передается!!!Не должно. http://infocenter.sybase.com/help/topic/com.sybase.dc36271_36272_36273_36274_1250/html/refman/X30305.htm The contents of the string or char_variable options cannot reference local variables declared in the SQL batch or procedure. Впрочем, если переменная объявлена снаружи пакета или процедуры из которого запускается динамический sql, то он должен смочь с ней работать... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2012, 19:29 |
|
Контекст dynamic sql запроса в процедуре!
|
|||
---|---|---|---|
#18+
Добрый день, я не поленился на 12.5.4 сделать такой пример: Код: sql 1. 2. 3. 4. 5. 6.
или Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Переменная без проблем передаётся в динамический запрос. Попробуйте на Вашем сервере? А вы могли-бы текст ошибки показать? Ещё такое предположение - может так быть, что у вас на старом сервере был больше размер страницы? От этого зависит размер переменной, и может быть ваш реальный SQL просто обрезается. Попробуйте: set string_rtruncation on Тоже, я бы посоветовал переменную @min_br во втором запросе вынести за кавычки SET @SQL = 'SELECT * FROM dbo.link l(index dat) WHERE l.id >=' + convert(varchar(20), @min_br) Оптимизатор тогде гистограмму будет использовать и план будет точнее. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 19:34 |
|
Контекст dynamic sql запроса в процедуре!
|
|||
---|---|---|---|
#18+
fatumator, Возможно это: 12.5.4 EBF 14656 460825 Execute immediate queries referencing outer scope variables may sometimes fail with syntax error about non declared local variables. Проверьте версии серверов (с точностью до EBF): select @@version ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2012, 20:27 |
|
|
start [/forum/topic.php?fid=55&fpage=16&tid=2010179]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 383ms |
0 / 0 |