Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что за фигня с OPENXML?  [new]
Gatwick
Member

Откуда:
Сообщений: 45
MSSQL 2000

use pubs

declare @xmlIDS varchar(4000)
set @xmlIDS = '<IDS><ObjectID>1389</ObjectID></IDS>'
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIDS
SELECT *INTO #tmp
FROM OPENXML (@idoc, '/IDS/ObjectID')
declare @c int
--select @c = count(*) from #tmp
select stfE.city as Name --, @c
from dbo.publishers stfE
where stfE.pub_id in (select pub_id from #tmp)

drop table #tmp
exec sp_xml_removedocument @idoc

ПОчему он мне выкатывает список авторов из таблицы? Надо же ведь только ОДНОГО!
22 апр 04, 00:38    [642171]     Ответить | Цитировать Сообщить модератору
 Re: Что за фигня с OPENXML?  [new]
josia
Member

Откуда: http://exactpro.com
Сообщений: 482
попробуйте так
use pubs 


declare @xmlIDS varchar(4000)
set @xmlIDS = '<IDS><ObjectID>1389</ObjectID></IDS>'
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIDS
SELECT *INTO #tmp
FROM OPENXML (@idoc, '/IDS',2) WITH (ObjectID int)
declare @c int
--select @c = count(*) from #tmp

select stfE.city as Name --, @c

from dbo.publishers stfE
where stfE.pub_id in (select ObjectID from #tmp)

drop table #tmp
exec sp_xml_removedocument @idoc


declare @xmlIDS varchar(4000)
set @xmlIDS = '<ROOT><IDS><ObjectID>1389</ObjectID></IDS><IDS><ObjectID>9952</ObjectID></IDS></ROOT>'
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIDS
SELECT *INTO #tmp
FROM OPENXML (@idoc, 'ROOT/IDS',2) WITH (ObjectID int)
declare @c int
--select @c = count(*) from #tmp

select stfE.city as Name --, @c

from dbo.publishers stfE
where stfE.pub_id in (select ObjectID from #tmp)

drop table #tmp
exec sp_xml_removedocument @idoc
22 апр 04, 06:19    [642232]     Ответить | Цитировать Сообщить модератору
 Re: Что за фигня с OPENXML?  [new]
Gatwick
Member

Откуда:
Сообщений: 45
Странно, помогло. А в чем там грабли?
22 апр 04, 10:41    [642678]     Ответить | Цитировать Сообщить модератору
 Re: Что за фигня с OPENXML?  [new]
Alexes
Member

Откуда:
Сообщений: 1100
А грабли в том, что в
select pub_id from #tmp
столбец pub_id - это столбец из таблицы publishers, так как таблице #tmp такого столбца вообще нет.
вот работающий код для вашего примера

use pubs

declare @xmlIDS varchar(4000)
set @xmlIDS = '<IDS><ObjectID>1389</ObjectID></IDS>'
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIDS

select * INTO #tmp
FROM OPENXML (@idoc, '/IDS/ObjectID',2)
with (pub_id int 'text()')
declare @c int
--select @c = count(*) from #tmp

select stfE.city as Name --, @c

from dbo.publishers stfE
inner join #tmp t on stfE.pub_id in (select pub_id from #tmp)

drop table #tmp
exec sp_xml_removedocument @idoc
22 апр 04, 11:59    [642944]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить