2010-06-09 51 views
4

我執行下面的存儲過程,但它顯示錯誤。該錯誤是 '附近有語法錯誤。'即錯誤顯示‘xmlFields.Country’ 也請看看這個存儲過程,並幫助我的感謝,提前錯誤來執行存儲過程使用在sql服務器中打開xml

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 

回答

1

它看起來像你試圖執行結果集中每一行的存儲過程。你不能這樣做。您將需要

1)使用遊標逐行處理。

2)創建的EXEC語句級聯列表成隨後可以用sp_executesql,或執行的爲nvarchar(最大)變量,

3)理想情況下,使用邏輯從所存儲的程序,但這樣做在一個根據OPENXML SELECT的結果設置基於方式。

1

你不能這樣做下面的代碼此@Country=xmlFields.Country

嘗試

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

,如果你想爲每個記錄使用SQL遊標執行過程以實現

你不能像這樣執行程序