xml查询之动态属性名称问题
DECLARE @s XML,@Price DECIMAL(18,2),@i INT,@xmlPath VARCHAR(200)SET @i=2 --实际应用中,通过参数传递进来的SET @s = '<row ProductID="1" Price1="111.00" Price2="222.00" Price3="333.00" Price4="444.00" Price5="555.00" Price6="666.00" Price7="777.00"/>'SET xmlPath = '/row[1]/@Price' + CONVERT(VARCHAR(10),@i)--这里是要动态读取某个字段的SET @Price = @s.value(@xmlPath,'DECIMAL(18,2)')--这样传进来不行,应该怎么写?
DECLARE @s XML,@Price DECIMAL(18,2),@i INT,@xmlPath VARCHAR(200)DECLARE @PriceName VARCHAR(10)='Price2'SET @s = '<row ProductID="1" Price1="111.00" Price2="222.00" Price3="333.00" Price4="444.00" Price5="555.00" Price6="666.00" Price7="777.00"/>'SELECT @s.value('(/row/@*[local-name()=sql:variable( "@PriceName")])[1]','DECIMAL(18,2)')