sp_xml_preparedocument

User avatar
Halbhalb
Уже с Приветом
Posts: 833
Joined: 07 Jun 2001 09:01
Location: Venice of US,FL,US

sp_xml_preparedocument

Post by Halbhalb »

Hi guys,

here is thing I need assistance,

sp_xml_preparedocument procedure well documented and in the description MS says that I can pass second parameter as type TEXT. But how to do that? I cannot create local variables as TEXT. I need text type data because XML files usually larger than 8000 chars. Anotherwords I need replace @xml in statement

exec sp_xml_preparedocument @idoc OUTPUT, @xml

as something in type TEXT

in case if I will use

exec('sp_xml_preparedocument @idoc OUTPUT, '''+@xml_part1+'''+'''+@xml_part2+'''')

I must declare 2,3,4 ... etc varchar(8000) variables, unacceptable for me, i need to have ability to support 1-2M xml files in size.

please, help anybody who can!!!
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

А откуда этот 1-2M XML файл берется?

1. Внешний файл который надо подсунуть sp_xml_preparedocument
2. Ты его сам генеришь в какой-нибудь stored proc

Если 1., то не вижу проблемы. Создаешь stored proc которая принимает параметр TEXT и подсовываешь его sp_xml_preparedocument
Если 2., то можно попробовать создать temp table c полем TEXT, а потом сделать SELECT
User avatar
Halbhalb
Уже с Приветом
Posts: 833
Joined: 07 Jun 2001 09:01
Location: Venice of US,FL,US

Post by Halbhalb »

my case is 1, i have that xml as external file.

hmm, should I pass file as TEXT or what? please describe little bit . Thanx.

P.S. sorry, net cyrrylic na rabote
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Code: Select all

CREATE Procedure dbo.proc_eq_UpdateOrdersBulk
    @pOrdersXML     NTEXT
AS
    SET NOCOUNT ON

    DECLARE @hDoc   INT

    EXEC sp_xml_preparedocument @hDoc OUTPUT, @pOrdersXML

    ... skip
User avatar
Halbhalb
Уже с Приветом
Posts: 833
Joined: 07 Jun 2001 09:01
Location: Venice of US,FL,US

Post by Halbhalb »

КВА, спасибо, дело в том, что я никогда не имел дела с большими массивами данных типа текст, имидж или нтекст в процедурах, до сих пор удавалось избегать этого, т.е. я не имею такой "картинки" в соображении которая по умолчанию обяснит как загрузить и передать парамер типа нтекст или текст. Не мог бы ты поконкретнее описать в кодах процесс загрузки файла и передачи его в процедуру proc_eq_UpdateOrdersBulk, что-то до меня не доходит.
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Что такое stored procedure знаешь? Если знаешь, то как параметры ее передать знаешь? Так вот TEXT или NTEXT такой же параметр как VARCHAR например.

А то как их ты передаешь, зависит от того на чем ты пишешь.
User avatar
Halbhalb
Уже с Приветом
Posts: 833
Joined: 07 Jun 2001 09:01
Location: Venice of US,FL,US

Post by Halbhalb »

KVA wrote:Что такое stored procedure знаешь? Если знаешь, то как параметры ее передать знаешь? Так вот TEXT или NTEXT такой же параметр как VARCHAR например.

А то как их ты передаешь, зависит от того на чем ты пишешь.


на T-SQL и пишу, как НТЕКСТ из файла загрузить?

короче у меня ощущение что надо самому писать extended procedure или обьект которые будут вызывать процедуру с параметром типа текст, в самом MSSQL этого не сделать :(
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Post by KVA »

Halbhalb wrote:короче у меня ощущение что надо самому писать extended procedure или обьект которые будут вызывать процедуру с параметром типа текст, в самом MSSQL этого не сделать :(


А собственно говоря почему бы и нет. Вот это не поможет?
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=01be01c34c87%2451ad3e70%24a301280a%40phx.gbl&rnum=52&prev=/groups%3Fq%3Dload%2Bfile%2BSQL%2Bserver%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26start%3D50%26sa%3DN

Return to “Вопросы и новости IT”