एक्सएमएल बोनर्स है
जब आप सम्मिलित स्ट्रिंग जोड़ते हैं, तो आप "पथ तत्व" खो देते हैं।
उदाहरण के लिए यदि आप ऐसा करते हैं:
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('');
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('type');
आप इसे वापस लें:
<type>Green/</type>
<type>Blue/</type>
<type>Red/</type>
स्तंभ नाम या अन्य नाम पथ तत्व के रूप में कार्य करता है।
कुछ अन्य उदाहरण जो मदद कर सकते हैं
का उपयोग करते हुए RAW, ELEMENTS
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
पहले उदाहरण में, आपको जेनेरिक "पंक्ति" तत्व का नाम मिलता है, लेकिन दूसरे में आपको पंक्ति / प्रकार मिलता है।
उपयोग करते समय RAW, TYPE
:
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
पहला क्वेरी मान्य-ish XML लौटाता है, दूसरा एक त्रुटि फेंकता है क्योंकि पथ तत्व में एक पहचानकर्ता की कमी होती है।
का उपयोग करते हुए AUTO
, तालिका उपनाम और स्तंभ नाम पथ में बदल जाता है:
SELECT type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
SELECT type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
लेकिन उपनाम के बिना, आपको एक समान त्रुटि मिलती है:
SELECT type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
मैं एक उदाहरण देना चाहता हूं, FOR XML EXPLICIT
लेकिन मेरे लिए अभी से पीना शुरू करना गैरजिम्मेदाराना होगा।