Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-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:
sql:column() functie (XQuery) Hiermee kun je de waarden uit een relationele kolom gebruiken in je XQuery- of XML DML-expressie.
sql:variable() functie (XQuery). Hiermee kun je de waarde van een SQL-variabele gebruiken in je XQuery- of XML DML-expressie.
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.