Share via


Relationele gegevens in XML-gegevens binden

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Je kunt xml Data Type Methods specificeren tegen een xml datatypevariabele of kolom. Bijvoorbeeld, de query()-methode (xml Data Type) voert de gespecificeerde XQuery uit tegen een XML-instantie. Wanneer je XML op deze manier construeert, wil je misschien een waarde toevoegen uit een kolom van het niet-XML-type of een Transact-SQL variabele. Dit proces wordt het binden van relationele data binnen XML genoemd.

Om de niet-XML relationele data binnen XML te binden, biedt de SQL Server Database Engine de volgende pseudo-functies:

Je kunt deze functies gebruiken met xml-datatypemethoden wanneer je een relationele waarde binnen XML wilt blootstellen.

Je kunt deze functies niet gebruiken om data te refereren in kolommen of variabelen van de xml-, CLR-door de gebruiker gedefinieerde types, datetime, smalldatetime, text, ntext, sql_variant en afbeeldingen .

Ook is deze binding bedoeld voor alleen-lezen doeleinden. Dat wil zeggen, je kunt geen data schrijven in kolommen die deze functies gebruiken. Bijvoorbeeld, sql:variable("@x")="some expression" is niet toegestaan.

Voorbeeld: Cross-domain Query met sql:variable()

Dit voorbeeld laat zien hoe sql:variable() een applicatie in staat kan stellen een query te parametriseren. Het ISBN wordt doorgegeven met behulp van een SQL-variabele @isbn. Door de constante te vervangen door sql:variable() kan de zoekopdracht worden gebruikt om te zoeken naar elk ISBN en niet alleen naar een ISBN waarvan het ISBN 0-7356-1588-2 is.

DECLARE @isbn VARCHAR(20)  
SET     @isbn = '0-7356-1588-2'  
SELECT  xCol  
FROM    T  
WHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1  

sql:column() kan op een vergelijkbare manier worden gebruikt en biedt extra voordelen. Indexen boven de kolom kunnen worden gebruikt voor efficiƫntie, zoals bepaald door de kostengebaseerde query-optimizer. Ook kan de berekende kolom een gepromoveerde eigenschap opslaan.

Zie ook