Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENROWSET(BULK @FileName...  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
доброго времени суток, все знающий алл

declare @FileName nvarchar(255) 
  set @FileName = N'c:\Test_sql.xml'
  set @xml = (SELECT DXML.* FROM OPENROWSET(BULK @FileName, SINGLE_CLOB) AS DXML)

не работает почему-то, как мне передать в качестве параметра адрес открываемого файла?

буду весьма благодарен


в диктанте три-четыре варнинга, но в общем компилируется
7 сен 09, 23:34    [7629229]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Потому что, согласно документации, OPENROWSET не принимает в качестве аргуменов переменные
Но вы можете сформировать динамический запрос, чтобы в OPENROWSET попало явное значение
8 сен 09, 00:07    [7629286]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
Glory
Потому что, согласно документации, OPENROWSET не принимает в качестве аргуменов переменные
Но вы можете сформировать динамический запрос, чтобы в OPENROWSET попало явное значение


я извиняюсь, я хотел сделать данное действие в ХП, и адрес к файлу указать через входящую переменную, динамический запрос тоже не подходит.... или я не правильно вас понял?
благодарствую
8 сен 09, 00:09    [7629294]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
Glory
Member

Откуда:
Сообщений: 104760
SHKoder
Glory
Потому что, согласно документации, OPENROWSET не принимает в качестве аргуменов переменные
Но вы можете сформировать динамический запрос, чтобы в OPENROWSET попало явное значение


я извиняюсь, я хотел сделать данное действие в ХП, и адрес к файлу указать через входящую переменную, динамический запрос тоже не подходит.... или я не правильно вас понял?
благодарствую

Динамический запрос можно делать где угодно
8 сен 09, 00:17    [7629312]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
Glory

Динамический запрос можно делать где угодно

я опять же извиняюсь, у меня запрос несколько не обычный, хотя я понимаю что с обычными сюда не приходят. если я выложу его весь сюда, можно будет разговаривать предметно

declare @xml xml
declare @FileName nvarchar(255) 
  set @FileName = N'c:\Test_sql.xml'
  
  set @xml = (SELECT DXML.* FROM OPENROWSET(BULK @FileName, SINGLE_CLOB) AS DXML)

открываю XML

  select
    t.rows.value('unitcode[1]','int') as unitcode,
    t.rows.value('price[1]','varchar(16)') as price        
  into #tmptable_doc_row  
  from @xml.nodes('/documents/document/body/item') as t(rows)

читаю XML

    insert into doc_row(
      unitcode,
      price)
    select 
      unitcode,
      cast(replace(price, ',', '.') as float) 
    from #tmptable_doc_row

вставляю в таблицу с полем флоат сконвертированные и полученные данные.
данный скелет процедуры сильноужат, есть еще масса кода который я вырезал чтобы не флеймить и не нагружать сообщение. если делать динамичный запрос, логика сильно нагрузится... XML достаточно большой и с ним выполняетс яне один порядок действий, импортируется масса данных, на основе которых происходят еще экспорты и апдейты данных в других таблицах.
потому опасаюсь сттоить динамческий запрос

потому и спрашиваю, как быть? что делать?
8 сен 09, 00:35    [7629363]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы знаете, что такое динамический запрос ?
8 сен 09, 00:46    [7629378]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET(BULK @FileName...  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
сабж закрыт, всем спасибо!

declare @xml xml
declare @FileName nvarchar(255) 
  set @FileName = N'c:\Test_sql.xml'
declare @xmlload nvarchar(300)

SET @xmlload=N'select @xml = (SELECT DXML.* FROM OPENROWSET(BULK N'''+@FileName+''', SINGLE_CLOB) AS DXML)'
exec sp_executesql @xmlload, N'@xml xml output', @xml=@xml output

в диктанте три-четыре варнинга, но в общем компилируется
8 сен 09, 00:46    [7629379]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: OPENROWSET(BULK @FileName...  [new]
Nelya_Kost
Member

Откуда:
Сообщений: 53
SHKoder,

Спасибо большое, мне тоже помогло!
1 апр 14, 14:56    [15816279]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить