powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какая команда сбрасывает декларированные переменные?
7 сообщений из 7, страница 1 из 1
Какая команда сбрасывает декларированные переменные?
    #33816123
igor_fp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, All.
В MS SQL 2000
В начале большой хранимой процедуре декларируются переменные.
Одной из них(нужной) присваивается значение.
А в середине этой ХП этой переменной уже нет:
Warning: Null value is eliminated by an aggregate or other SET operation.
Server: Msg 137, Level 15, State 2, Line 2
Must declare the variable '@nOtborLink1'.
Какая команда сбрасывает декларированные переменные?
Спасибо.
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33816142
igor_fp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят. Если написать в виде:
declare @nOtborLink1 int
set @nOtborLink1=1016738
select @cAddWhere2=isnull(@cAddWhere2,'')+'
execute(''
DELETE FROM ~V_OTCHET_OUT_ALIAS~ WHERE ACCOUNT NOT IN (SELECT RECORD FROM OBJECT_VAR_RECORDS WHERE LINK_UP=@nOtborLink1)
'')
'
то будет:
The variable name '@nOtborLink1' has already been declared. Variable names must be unique within a query batch or stored procedure.
Видимо
select @cAddWhere2=isnull(@cAddWhere2,'')+'
execute(''
DELETE FROM ~V_OTCHET_OUT_ALIAS~ WHERE ACCOUNT NOT IN (SELECT RECORD FROM OBJECT_VAR_RECORDS WHERE LINK_UP=@nOtborLink1)
'')
'
отдельная ХП.
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33816320
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все что выполняется в EXECUTE (dynamic execution) не в scope (области видимости) вашей хранимой процедуры и, следовательно, "не видит" локальные переменные, определенные в ней.
Для передачи параметров внутрь EXECUTE можно:
1. Использовать временную таблицу. Она "видна" внутри EXECUTE
2. Подставлять в динамически формируемую строку не ссылку на переменную, а ее значение:
execute('
DELETE FROM ~V_OTCHET_OUT_ALIAS~ WHERE ACCOUNT NOT IN (SELECT RECORD FROM OBJECT_VAR_RECORDS WHERE LINK_UP=' + CAST(@nOtborLink1 AS VARCHAR(10)) + ')'
)

С уважением, Алексей
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33816425
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K
2. Подставлять в динамически формируемую строку не ссылку на переменную, а ее значение:
execute('
DELETE FROM ~V_OTCHET_OUT_ALIAS~ WHERE ACCOUNT NOT IN (SELECT RECORD FROM OBJECT_VAR_RECORDS WHERE LINK_UP=' + CAST(@nOtborLink1 AS VARCHAR(10)) + ')'
)


Выход, но сопряженный с риском :))

Код: plaintext
1.
2.
3.
declare @string char( 100 )

set @string = 'select * from ' + @string
select @string

Поэтому, лучше использовать sp_executesql с передачей параметров.
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33816450
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Aleksey-K
2. Подставлять в динамически формируемую строку не ссылку на переменную, а ее значение:
execute('
DELETE FROM ~V_OTCHET_OUT_ALIAS~ WHERE ACCOUNT NOT IN (SELECT RECORD FROM OBJECT_VAR_RECORDS WHERE LINK_UP=' + CAST(@nOtborLink1 AS VARCHAR(10)) + ')'
)


Выход, но сопряженный с риском :))

Код: plaintext
1.
2.
3.
declare @string char( 100 )

set @string = 'select * from ' + @string
select @string

Поэтому, лучше использовать sp_executesql с передачей параметров.

Не думаю, что риск есть в данном случае. EXECUTE вызывается из хранимой процедуры. Думаю, что параметры уже проверены на входе хранимой процедуры на предмет потенционально опасных символов типа ";", "--" и пр.
Иначе, вы правы, могут быть проблеммы.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33818715
igor_fp, потерпите немного... Скоро kvl выйдет из отпуска и подскажет вам, как правильно поступить в данной ситуации.
...
Рейтинг: 0 / 0
Какая команда сбрасывает декларированные переменные?
    #33818950
igor_fp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Воспользовался временной таблицей.
Всем спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какая команда сбрасывает декларированные переменные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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