我执行以下存储过程。但它显示错误。错误是 ''。'附近的语法不正确。即错误显示在'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
答案 0 :(得分:1)
看起来您正在尝试为结果集的每一行执行存储过程。你不能这样做。你需要
1)使用游标逐行处理。
2)创建一个EXEC
语句的连接列表到nvarchar(max)变量中,然后可以用sp_executesql
执行,或者
3)理想情况下,使用存储过程中的逻辑,但是以基于集合的方式对照OPENXML SELECT
的结果。
答案 1 :(得分:1)
你不能这样做 @Country=xmlFields.Country
尝试以下代码
EXEC @CityIDReturn=sp_SuSaveADUsersLocation xmlFields.Country,
xmlFields.State,xmlFields.City
如果你想为每个记录执行程序使用sql cursor实现
,你就不能执行这样的程序