日期:2014-05-17 浏览次数:20737 次
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)')