Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Загрузка xml с удаленного ресурса   Найти похожие ветки 

 
alsov ©   (2006-10-26 10:28) [0]

Приветствую, Мастера

Есть некий xml файл, который отдает http сервер.

Нужно сделать выборку из его и сформировать resultset.

Как получить из xml выборку я разобрался. Делаю так:

begin
 DECLARE @idoc int
 EXEC sp_xml_preparedocument @idoc OUTPUT, "
<?xml version="1.0" encoding="Windows-1251" ?>
<root>
 <tag value="Value1" date="2006-10-25" time="17:04:19" />
 <tag value="Value2" date="2006-10-25" time="17:04:19" />
 <tag value="Value3" date="2006-10-25" time="17:04:19" />
 <tag value="Value4" date="2006-10-25" time="17:04:19" />
 <tag value="Value5" date="2006-10-25" time="17:04:19" />
</root>"
 SELECT *
 FROM OPENXML (@idoc, "/root/tag",1)
         WITH (value  varchar(15),
               date varchar(20),
               time varchar(20)
               )

 EXEC sp_xml_removedocument @iDoc
end


Но как вместо строки запихнуть урл на xml ума не приложу.

Заранее спасибо за любую помощь


 
alsov ©   (2006-10-26 15:22) [1]

Все разобрался сам
Нашел процедуру

CREATE PROCEDURE LoadXMLFromFile
(
@tcFileNameVARCHAR(255),
@tcXMLStringVARCHAR(8000) OUTPUT
) AS
BEGIN
-- Scratch variables used in the script
DECLARE @retVal INT
DECLARE @oXML INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescription VARCHAR(8000)
DECLARE @loadRetVal INT

-- Initialize the XML document
EXEC @retVal = sp_OACreate "MSXML2.DOMDocument", @oXML OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

EXEC @retVal = sp_OASetProperty @oXML, "async", 0
IF @retVal <> 0
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Load the XML into the document
EXEC @retVal = sp_OAMethod @oXML, "load", @loadRetVal OUTPUT, @tcFileName
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Get the loaded XML
EXEC @retVal = sp_OAMethod @oXML, "xml", @tcXMLString OUTPUT
IF (@retVal <> 0)
BEGIN
-- Trap errors if any
EXEC sp_OAGetErrorInfo @oXML, @errorSource OUTPUT, @errorDescription OUTPUT
RAISERROR (@errorDescription, 16, 1)

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML
RETURN
END

-- Release the reference to the COM object
EXEC sp_OADestroy @oXML

END


Все равно не решило проблемы. Но я думаю что решения её в mssql нет вообще.

Первая проблема (скорее самая важная) - невозможно из этого кода сделать вьюху(или функцию) и обращаться в xml как к таблице.
Вторая - проблема xml большого размера. Очень негативно влияет на производительность.



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
15-1166803567
Лёля
2006-12-22 19:06
2007.01.14
Delphi 6 и CodeFolding


15-1166544992
Parus
2006-12-19 19:16
2007.01.14
типа мессажебокс


3-1161965081
Ag@nt
2006-10-27 20:04
2007.01.14
Posgre+C++


1-1163789132
SkySpeed
2006-11-17 21:45
2007.01.14
Как распечатать, используя Delphi файл?


3-1161765448
Flash_80
2006-10-25 12:37
2007.01.14
Из Query в Excel?