Beépített xsd sémák létrehozása
A FOR XML-záradékban kérheti, hogy a lekérdezés a lekérdezés eredményével együtt egy beépített sémát küldjön vissza. Ha XDR sémát szeretne kapni, használja a FOR XML-záradék XMLDATA kulcsszavát. Ha XSD-sémát szeretne kapni, akkor az XMLSCHEMA kulcsszót kell használnia.
Ez a szakasz leírja az XMLSCHEMA kulcsszót, és megmagyarázza az eredményül kapott beépített XSD séma struktúráját. Az alábbiak a beágyazott sémákra vonatkozó korlátozások.
Az XMLSCHEMA paraméter csak RAW és AUTO módban állítható be, ez EXPLICIT módban nem végezhető el.
Ha egy TYPE direktíva definiálódik a FOR XML alkérdésben, akkor a lekérdezés eredményének az xml adat típusát kell megadnia, és a nem típusú XML-adatok egy példányát kell átadni. További információ: XML adatok (SQL Server).
Az eredményként kapott sémában számos különböző sémakumentum létezik, amelyek különböző névtereket tartalmaznak. Legalább a következő két sémát kell visszaküldeni.
Egy séma dokumentum a Sqltypes névtér számára. amelyhez az alapvető SQL típusok visszakerülnek.
Egy másik sémadokumentum, amely leírja a FOR XML lekérdezés eredményének formáját.
Ezenkívül, ha a lekérdezés eredményei magukban foglalják az összes xml típusú adattípust. akkor az ezekhez az xml adattípusokhoz társított rendszerek visszaküldésre kerülnek.
A FOR XML eredményformátumot leíró sémadokumentum céldokumentum-névtérében egy rögzített rész és egy számszerű rész kerül automatikusan növekvő értékre. A névtér formátuma az alábbiakban látható, ahol n pozitív egész szám. Például az előző lekérdezésben a célnevek urn: schemas-microsoft-com: sql: SqlRowSet1.
Nemkívánatos lehet a céltáblák megváltoztatása a két futás között bekövetkezett eredmények következtében. Ha például az eredményül kapott XML-t kérték, akkor a célnevek helyének módosításakor frissítenie kell a lekérdezést. Szükség esetén meg lehet adni egy célnevtartományt, ha az XMLSCHEMA paramétert hozzáadja a FOR XML-záradékhoz. Az eredményül kapott XML tartalmazza a megadott névteret, és változatlan marad, függetlenül attól, hogy hány alkalommal hajtották végre a lekérdezést.
Mivel a ELEMENTS direktíva hozzá van adva a lekérdezéshez, az XML-eredmény elemek felhasználásával készül. Ez a kérés egy XMLSCHEMA direktíva meghatározását is tartalmazza, így a beépített XSD séma visszakerül. Eredményhalmaz:
Vegye figyelembe a következő adatokat az előző lekérdezésből.
A következő érvelés a CustOrder és a CustOrderDetail táblákat használja. A következő minták teszteléséhez hozzon létre ugyanazokat a táblázatokat, és adja hozzá saját mintaadatait:
Ez az XML. A beépített XSD csak a része látható:
Vegye figyelembe a következőket a beépített XSD sémában.
Mindkét érték, a ListPrice és a DealerPrice, azonos adattípussal és pénzzel rendelkeznek. és mindkettő értéke NULL a táblázatban. Így, mivel nem térhetnek vissza az eredményül kapott XML-ben, egy összetett elemtípus deklarációjában
Ennek eredményeképpen, mivel a DealerPrice értéke a táblában NULL, mint elem
2. eset Egy kulcs oszlop és egy nem kulcsos oszlop, azonos típusú
A következő lekérdezés egy kulcs oszlopot és egy azonos típusú nem kulcsos oszlopot tartalmaz.
Az eredmény. Megjelenik a beépített XSD séma csak egy része:
Ne feledje, hogy a beépített XSD sémában az elem
3. eset. A különböző típusú elemek és a megfelelő oszlopok NULL lehetnek
A 2. esethez a következő lekérdezést adjuk meg a minta táblázathoz képest:
Ebben a lekérdezésben a Col2 és a Col3 azonos aliasokkal rendelkezik. Ez két azonos nevű elem megjelenéséhez vezet, amelyek az elem gyermekelemei
IgnoreKanaType IgnoreWidth "sqltypes: sqlSortId =" 52 "> Vegye figyelembe a következőket a beépített XSD sémában. Ennek eredményeként egy elem minden egyes példánya