1
我目前正在使用存儲過程生成報告。查詢存儲過程中的XML字符串
表結構::
//File Table Fields
FILE_ID (int)
FILE_DATE (string)
FILE_CONTENTS (XML)
FILE_CONTENTS_STRING (string)
PROCESSED (bool)
存儲過程:
//Grabs the ID and Date for each of the Unprocessed Files
SELECT [FILE_ID],
[FILE_DATE]
FROM [tbFILES]
WHERE [PROCESSED] = 0
存儲過程從文件的表,類似於以下
(simplfied爲了簡潔)收集關於未處理文件的信息
我想輸出兩個額外的字段,在FILE_CONTENTS
(或FILE_CONTENTS_STRING
),這是在XML /字符串都發現在地區這樣的:
XML結構部分:
<FID.4>
<FID.4.1>TESTING</FID.4.1> //File Header
</FID.4>
<FID.5>
<FID.5.1>TEST</FID.5.1> //Owner Last Name
<FID.5.2>TEST</FID.5.2> //Owner First Name
<FID.5.3 />
<FID.5.4 />
<FID.5.5 />
<FID.5.6 />
<FID.5.7 />
<FID.5.8 />
</FID.5>
我想什麼來完成是輸出這兩個值(文件標題)和所有者名稱(Last,First)作爲存儲過程調用的一部分。
輸出:
[FILE_ID] //From Table
[FILE_DATE] //From Table
[FILE_HEADER] //From FILE_CONTENTS in <FID.4.1></FID.4.1>
[FILE_OWNER] //From FILE_CONTENTS in <FID.5.1></FID.5.1>,<FID.5.2></FID.5.2>
是它有可能使XML文件(FILE_CONTENTS)或字符串形式(FILE_CONTENTS_STRING)XML文件使用存儲過程中的SQL查詢這種類型的信息?
編輯:第一次嘗試(不成功)
SELECT FILE_ID,
FILE_DATE,
FILE_CONTENTS.value('(/PID.4/PID.4.1)[1]', 'varchar(16)') as FILE_HEADER,
FILE_CONTENTS.value('(/PID.5/PID.5.1)[1]', 'varchar(16)') + ', ' +
FILE_CONTENTS.value('(/PID.5/PID.5.2)[1]', 'varchar(16)') as FILE_OWNER
FROM [tbFILES]
其產生NULL爲FILE_HEADER
和FILE_OWNER
字段。我認爲需要更復雜的東西?再次
更新:(!問題解決)
我不得不額外部分添加到XML,因爲所提供的部分本來是一個更大的XML文檔的片段。
嗨馬克,我感謝您的答案,當我試圖使用它時,我收到了File_Header和File_Owner字段中的NULL值。我會繼續嘗試一些微小的變化,希望取得一些進展。 – 2011-04-14 15:58:41
只是一個更新馬克 - 我能夠讓我的原始方法工作(只是使用該值),顯然我不得不進一步看,並添加一個額外的水平到Node.value部分。我感謝您的幫助 :) – 2011-04-14 16:13:52