powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Контекст dynamic sql запроса в процедуре!
6 сообщений из 6, страница 1 из 1
Контекст dynamic sql запроса в процедуре!
    #37650319
fatumator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть интересный случай в SQL-процедурине. Прошу проконсультировать.

Ситуация следующая:

Есть процедура на боевом сервере А (ASE-12.5.4), которая исправно работает.Но перенести эту процедуру на другой сервер не получается из-за ошибки синтаксиса!

В теле процедуры объявлена переменная.
Внутри dynamic-sql запроса, ей присваивается значение.
Затем, эта переменная используется в теле процедуры.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SET @SQL = 'SELECT @min_br= l.id FROM dbo.link l(index dat) , dbo.merchant m WHERE  l.merchant_id = m.id'
exec(@SQL)
...
SET @SQL = 'SELECT *
                  FROM dbo.link l(index dat) 
                  WHERE  l.id >= @min_br'

exec(@SQL)



По документации у динамически исполняемого запроса и процедуры разные контексты, но переменная @min_br все равно передается!!! И работает это только на сервере А.

Сколько я не пытался применить эту процедуру на других серверах - нигде она не отрабатывает. Мб есть какие-нить параметры ASE для dynamic sql?
...
Рейтинг: 0 / 0
Контекст dynamic sql запроса в процедуре!
    #37650638
fatumator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
типо ап!
...
Рейтинг: 0 / 0
Контекст dynamic sql запроса в процедуре!
    #37650653
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, то он должен смочь с ней работать...
...
Рейтинг: 0 / 0
Контекст dynamic sql запроса в процедуре!
    #37666020
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,
я не поленился на 12.5.4 сделать такой пример:
Код: sql
1.
2.
3.
4.
5.
6.
declare @a int, @sql varchar(255)

select @sql = 'select @a = 1'

execute (@sql)
select @a



или
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create procedure test_proc
as
declare @a int, @sql varchar(255)

select @sql = 'select @a = 1'

execute (@sql)
select @a
go
exec test_proc



Переменная без проблем передаётся в динамический запрос.
Попробуйте на Вашем сервере?

А вы могли-бы текст ошибки показать?

Ещё такое предположение - может так быть, что у вас на старом сервере был больше размер страницы?
От этого зависит размер переменной, и может быть ваш реальный SQL просто обрезается.

Попробуйте: set string_rtruncation on

Тоже, я бы посоветовал переменную @min_br во втором запросе вынести за кавычки
SET @SQL = 'SELECT *
FROM dbo.link l(index dat)
WHERE l.id >=' + convert(varchar(20), @min_br)
Оптимизатор тогде гистограмму будет использовать и план будет точнее.


С уважением.
...
Рейтинг: 0 / 0
Контекст dynamic sql запроса в процедуре!
    #37666094
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
...
Рейтинг: 0 / 0
Контекст dynamic sql запроса в процедуре!
    #37666241
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вариант с версией поможет, то потом вынесьте переменную за кавычки, просто из любви к искусству :-)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Контекст dynamic sql запроса в процедуре!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]