Ошибка, чтобы выполнить хранимую процедуру, используя с открытым XML в SQL Server - PullRequest
4 голосов
/ 09 июня 2010

Я выполняю хранимую ниже процедуру. Но она показывает ошибку.Ошибка «Неправильный синтаксис рядом с». То есть ошибка отображается в «xmlFields.Country». Пожалуйста, посмотрите также эту хранимую процедуру и помогите мне заранее, спасибо

create procedure sp_SuUpdateSUADUsersStatus
(
    @FinalEMPCode nvarchar(50),
    @xmlFields NTEXT 
)
AS  
DECLARE @CityIDReturn INT
SET NOCOUNT ON  
BEGIN  
 DECLARE @hdoc INT  

 EXEC sp_xml_preparedocument @hdoc OUTPUT, @xmlFields

          BEGIN
         EXEC @CityIDReturn=sp_SuSaveADUsersLocation @Country=xmlFields.Country,
          xmlFields.State,xmlFields.City
         FROM OPENXML(@hDoc, 'EmpCode/User', 2)   WITH 
         (Country nvarchar(500),State nvarchar(500),City nvarchar(500))
         as xmlFields
         where xmlFields.Country <>'' and xmlFields.State <>'' and xmlFields.City   
                 <>'')
      END



    EXEC sp_xml_removedocument @hdoc


End

Ответы [ 2 ]

1 голос
/ 09 июня 2010

вы не можете сделать это @Country=xmlFields.Country

попробуйте ниже код

  EXEC @CityIDReturn=sp_SuSaveADUsersLocation xmlFields.Country,
          xmlFields.State,xmlFields.City

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

1 голос
/ 09 июня 2010

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

1) использовать курсор для построчной обработки.

2) создать объединенный список EXEC операторов в переменную nvarchar (max), которую затем можно выполнить с помощью sp_executesql или

3) в идеале, используйте логику из хранимой процедуры, но делайте это на основе набора по отношению к результатам OPENXML SELECT.

...