SQLShack
I denne artikkelen viser vi hvordan du oppretter ET XML-datatypedokument fra en relasjonstabell ved hjelp av forskjellige t-SQL-måter. For dataoverføring kan for eksempel informasjon fra SQL Server-databasen eksporteres og importeres VED HJELP AV XML i et annet rammeverk. XML ER en standard måte å trekke ut, lagre og manipulere data. Et aspekt ved å arbeide MED XML-datatypen er å opprette XML fra relasjonsinformasjon, som er gjort ved hjelp AV for XML-bestemmelsen I SQL Server:
 
 EN XML-datatype kan brukes på en alternativ måte I SQL Server. Denne artikkelen vil forklare noen grunnleggende bruk AV XML. FOR XML-nøkkelord er en bestemmelse som kan legges til MED SELECT query-setningen for å klargjøre XML-dokumentet i de nødvendige skjemaene i et spørringsresultat. Resultatet er En Unicode-streng som inneholder komponenter og kvaliteter som styres av de forskjellige modusene som er bestemt i bestemmelsen MED FOR XML.
de fire modusene er:
- RAW
 - AUTO
 - EKSPLISITT
 - STI
 
tabellen nedenfor viser eksempeldata for ytterligere avklaring av de ulike metodene:
 
 AUTOMATISK modus
AUTOMATISK modus er en av tilnærmingene til å konvertere OVER TIL XML-elementene fra radene i tabellen. Elementnavn PÅ XML-dokumentet som svarer til kolonnealiaset eller kolonnenavnet PÅ UTVALGSSPØRRINGEN.
spørringsresultatet er for eksempel produsert med et ENKELT XML-dokument for eksempeldataene ovenfor. Spørringsresultatet hadde 5 rader i et resultatsett, som er endret til en enslig celle resultatsett. Denne metoden brukes i en enkeltverdig funksjon for å returnere flere rader i en enkelt returvariabel.
| 
 1 
2 
3 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 FOR XML AUTO;  
 | 
 
 HER produserer AUTO header navn utnytte tabellnavn.
EKSPLISITT modus
FOR mer kontroll over utformingen av DEN påfølgende XML, KAN SQL-utviklere bruke EKSPLISITT modus. MED EKSPLISITT modus endres et spørringsresultat til et ENKELT XML-datatypedokument med tilpassede XML-etiketter og verdier. EKSPLISITT modus vil gjøre et annet etikettsett for hver rad i en post. Selv, GJØR EKSPLISITT modus utforme XML-format som brukeren ønsker å sette plasseringen av elementene I XML datatype format I SQL-Spørring.
Nedenfor er et eksempel på BRUK AV EKSPLISITT modus:
SQL-spørring:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
 | 
  VELG 1 som tag,  
 NULL som forelder,  
 user_id as,  
 NULL AS,  
 NULL AS,  
NULL AS  
 NULL AS  
 fra user_details  
 UNION ALLE  
 VELG 3 som tag,  
 1 som forelder,  
 user_id as ,  
 fname AS ,  
 lname AS ,  
 email_ AS  
 fra user_detaljer  
 UNION ALLE  
 velg 2 som tag,  
 1 som forelder,  
 user_id as ,  
 fname as ,  
 lname as ,  
 lname as,  
 lname as,  
 email_ as  
 fra user_details  
 bestill med 3, 1  
 for xml eksplisitt;  
 | 
EKSPLISITT modus resultat:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
 | 
  <bruker>  
 <fname fname= «Jo» />  
 <lname lname= «Brun» />  
</bruker> 
 <bruker>  
 <fname fname= «Katie» />  
 < lname lname= «McAskill-Hvit» />  
</bruker> 
 <bruker>  
 <fname fname= «Mihail» />  
 <lname lname= «Frintu» />  
</bruker> 
 <bruker>  
 <fname fname= «Jimmy» />  
 <lname lname= «Bischoff» />  
</bruker> 
 <bruker>  
 <fname fname= «Alan» />  
 <lname lname= «Brygger» />  
</bruker> 
 | 
 
 RAW-modus
DEN vanligste og ofte brukte modusen av utviklere for Å lage XML innen FOR XML er RAW-modusen. I UTGANGSPUNKTET gir RAW-modus et element som heter » row » fra resultatsettet for hver rad I SELECT-artikulasjonen, og celleverdien til raden vil bli begrenset som et attributt til elementet. I EN RAW-modus, vil hver kolonne bli behandlet som ett element I XML, og kolonner av disse linjene vil bli tilskrevet det samme elementet. RAW-modus brukes til å endre hver rad i resultatsettet til EN XML-komponent.
FOR RADMODUS, ulike spørr modeller med ulike utganger forklart i eksemplene nedenfor:
Eksempel 1
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 FOR XML RAW  
 < rad user_id= «1»fname=» Jo » Lname=»Brun» email_ = » jo0 @ adventure-fungerer.com» />  
 <row user_id=»2″ fname= «Katie» lname = «McAskill-Hvit» email_=»[email protected]» />  
 <row user_id=»3″ fname= «Mihail» lname= «Frintu» email_=»[email protected]» />  
 <row user_id= » 4 «fname=» Jimmy «lname=» Bischoff » email_=»[email protected]» />  
 <row user_id=»5″ fname= «Alan» lname= «Brewer» email_ = » [email protected]» />  
 | 
VED HJELP AV RAW-modus defineres overskriften for hvert element som et radelement I XML-resultatet, og kolonnene i hver rad tilskrives i radelementet i XML-datatyperesultatet.
Eksempel 2
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 FOR XML RAW(‘bruker’), ROOT  
 < root>  
 <bruker user_id= » 1 «fname=» Jo «lname=» Brown «email_=» [email protected]» />  
 <user user_id= » 2 «fname=» Katie «lname=» McAskill-Hvit » email_=»[email protected]» />  
 <bruker user_id= » 3 «fname=» Mihail «lname=» Frintu » email_=»[email protected]» />  
 <bruker user_id= » 4 «fname=» Jimmy «lname=» Bischoff » email_=»[email protected]» />  
 <bruker user_id= » 5 «fname=» Alan «lname=» Brewer «email_=» [email protected]» />  
 </root>  
 | 
HVIS brukeren vil inkludere alle elementene i en enkelt kode, KAN ROTALTERNATIVET med RAW-modusen brukes, og hvert elements toppnavn kan defineres av brukeren ved å legge til et navn MED RAW () i XML-datatyperesultatet.
Eksempel 3
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 FOR XML RAW(‘bruker’), ROOT (‘UserDetails’)  
 <UserDetails>  
 <bruker user_id= » 1 «fname=» Jo «lname=» Brown «email_=» [email protected]» />  
 <user user_id= » 2 «fname=» Katie «lname=» McAskill-Hvit » email_=»[email protected]» />  
 <bruker user_id= » 3 «fname=» Mihail «lname=» Frintu » email_=»[email protected]» />  
 <bruker user_id= » 4 «fname=» Jimmy «lname=» Bischoff » email_=»[email protected]» />  
 <bruker user_id= » 5 «fname=» Alan «lname=» Brewer «email_=» [email protected]» />  
 </UserDetails>  
 | 
I XML RAW-ROTEN kan overskriften utformes med et brukerdefinert navn med ROTEN (). Som det kan ses i eksemplet, erstattes <rot> – elementet med <UserDetails >
Eksempel 4
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 FOR XML RAW, ELEMENTER  
 < rad >  
  <bruker_id > 1 < / bruker_id>  
 <fname > Jo< / fname>  
 <lname > Brun < /lname>  
 <e-post_>[email protected]< / e-post_>  
 </row>  
 <row>  
 <bruker_id> 2 < / bruker_id>  
 <fname >Katie < / fname>  
 <lname > McAskill-Hvit< /lname>  
 <email_> [email protected]< / e-post_>  
 </row>  
 | 
Ved HJELP AV ELEMENT direktivet MED RAW-modus, kan brukeren gjøre rad-element struktur-basert XML. Hver celle i raden trekkes ut MED XML-elementer inne i det overordnede elementet i raden som <rad >. I utgangspunktet brukte VI ELEMENTS-søkeordet i spørringen ovenfor for å vise kolonnene som elementer I output XML.
BANEMODUS
DEN beste modusen for Å lage XML med mer kontroll over formatet er BANEMODUS. Ved HJELP AV BANEN kan brukeren komponere enklere VALG OG forsyning AV xpath-artikulasjoner for kolonnen for å tildele en kommandokjede. Bruk FOR XML-BANE med delspørringer for å få riktig XML-datatypedokument med element-attributtkjeden:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
 | 
  VELG user_id, fname, lname, email_  
 fra user_details  
 hvor email_ = ‘[email protected]’  
 FOR XML-BANE;  
 < rad>  
 <bruker_id> 3 < / bruker_id>  
 <fname > Mihail < / fname>  
 <lname > Frintu < /lname>  
 <e-post_>[email protected]< / e-post_>  
 </row>  
 | 
Konklusjon
Det er enkelt å Bruke et serverspørringsresultat for å oppnå ET ANNET XML-format. Spørringsresultatet trekkes ut I XML ved å inkludere EN for XML catchphrase på slutten AV SELECT-setningen. Som diskutert har vi en rekke alternativer for å strukturere eller ordne utfallet med kolonner til attributter eller XML-noder med XML-datatypen.
- Forfatter
 - Siste Innlegg
 
Vis alle innlegg av Jignesh Raiyani
- Forventet Levetid (PLE) I SQL Server – 17. juli 2020
 - slik automatiserer Du Tabellpartisjonering I SQL Server – 7. juli 2020
 - Konfigurere SQL Server Alltid På Tilgjengelighetsgrupper PÅ AWS EC2 – juli 6, 2020
 




