2
我正在編寫一個T-SQL UDF並嘗試修改一個xml變量,其中包含由遊標讀取的值。代碼執行得很好,但xml變量的修改不會發生。SQL Server XQuery修改
代碼去如下:
CREATE FUNCTION GetDateBlockXmlFromTable(@occupieddates occupieddates READONLY)
RETURNS XML
AS
BEGIN
DECLARE @xmlresult xml;
DECLARE @datefrom datetime, @dateto datetime;
SELECT @xmlresult = '<root><DateBlocks/></root>';
DECLARE GetDateBlockXmlFromTable_Cur
CURSOR FOR
SELECT DateFrom, DateTo FROM @occupieddates
OPEN GetDateBlockXmlFromTable_Cur
FETCH NEXT FROM GetDateBlockXmlFromTable_Cur INTO @datefrom, @dateto
WHILE @@FETCH_STATUS = 0
BEGIN
SET @xmlresult.modify('insert <DateBlock><FirstDay>"{sql:variable("@datefrom")}"</FirstDay><EndDay>"{sql:variable("@dateto")}"</EndDay></DateBlock> as last into (/DateBlocks)[1]');
FETCH NEXT FROM GetDateBlockXmlFromTable_Cur INTO @datefrom, @dateto
END
CLOSE GetDateBlockXmlFromTable_Cur
DEALLOCATE GetDateBlockXmlFromTable_Cur
RETURN @xmlresult;
END
的occupieddates只讀輸入表是這樣的:
CREATE TYPE occupieddates AS TABLE
(
DateFrom datetime,
DateTo datetime,
)
這真是棒極了!太感謝了! –