powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL сервер XML
7 сообщений из 7, страница 1 из 1
SQL сервер XML
    #32400321
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начало процедуры на SQL сервере :

DECLARE @xml_doc int
DECLARE @lcxml varchar(1000)
/*следующие данные передаются из Fox, но я прописал их прямо здесь для отладки на сервере */
set @lcxml='
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<row part_aid="229"/>
<row part_aid="271"/>
<row part_aid="314"/>
</VFPData>'
exec sp_xml_preparedocument @xml_doc OUTPUT, @lcxml

/*Далее не работает запрос:*/
select oper.part_aid
from oper
where oper.part_aid NOT IN
(select part_aid from OPENXML(@xml_doc, '//row') WITH(part_aid INT '@part_aid'))

/*Вернее работает, но в результате не убирает записи, которые выбираются в подзапросе: select part_aid from OPENXML(@xml_doc, '//row') WITH(part_aid INT '@part_aid')*/
/*--------------------------------------*/

Пробовал запрос:
select oper.part_aid from oper where oper.part_aid NOT IN(229,271,314)
работает. В чем причина не пойму, в таблице OPER поле part_aid тоже имеет тип INT(4).

Кто подскажет решение проблемы. тому БОЛЬШОЕ СПАСИБО.
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400381
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что выдает
select part_aid from OPENXML(@xml_doc, '//row') WITH(part_aid INT '@part_aid')) ?
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400415
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select part_aid from OPENXML(@xml_doc, '//row') WITH(part_aid INT '@part_aid'))
выдает табличку из 3-х записей:
part_aid
229
271
314
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400443
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать вот так?
Код: plaintext
1.
2.
3.
4.
5.
6.
declare @t table (ID int)
insert @t
select part_aid from OPENXML(@xml_doc, '//row') WITH(part_aid INT '@part_aid')) 

select oper.part_aid 
from oper 
where oper.part_aid NOT IN (select ID from @t)
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400461
Voevoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает
Thanks
Еще небольшой вопросик:
если я из Fox все это хозяйство делаю,то все вот эти переменные и таблица, объявленные declare висят на сервере или нет? А если висят, как их удалить?
Надо же за собой все почистить.
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400487
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это локальные переменные... По окончании батча сами вычищаются...
...
Рейтинг: 0 / 0
SQL сервер XML
    #32400502
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл у вас же еще XML
Обязательно надо сделать
EXEC sp_xml_removedocument @xml_doc
А то утечка памяти может быть
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL сервер XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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