使用带有 open xml 的存储过程在 SQL Server 中执行时出现错误。

4
我执行以下存储过程,但出现了错误。错误信息为“'.' 附近的语法不正确”,即在 '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

你不能这样做 @Country=xmlFields.Country

尝试下面的代码

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

如果您想为每个记录执行存储过程,请使用SQL游标来实现,不能像这样执行存储过程。


1

看起来您正在尝试对结果集的每一行执行存储过程。您不能这样做。您需要:

1)使用游标进行逐行处理;

2)创建一个 nvarchar(max) 变量,将 EXEC 语句拼接成一个串联的列表,然后使用 sp_executesql 执行;或者,

3)理想情况下,使用存储过程中的逻辑以基于集合的方式针对 OPENXML SELECT 的结果进行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接