Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
FOR A záradék használatával adja meg a lekérdezési eredmények alábbi beállításainak egyikét.
- Adja meg
FOR BROWSE, hogy engedélyezi-e a frissítéseket a lekérdezés eredményeinek megtekintése közben a tallózási módban lévő kurzorban. - Adja meg
FOR XML, hogy a lekérdezési eredmények XML formátumban formázva legyen. - Adja meg
FOR JSONa lekérdezési eredmények JSON-ként való formázását.
Transact-SQL szintaxis konvenciói
Syntax
[ FOR { BROWSE | <XML> | <JSON> } ]
<XML> ::=
XML
{
{ RAW [ ( 'ElementName' ) ] | AUTO }
[
<CommonDirectivesForXML>
[ , { XMLDATA | XMLSCHEMA [ ( 'TargetNameSpaceURI' ) ] } ]
[ , ELEMENTS [ XSINIL | ABSENT ]
]
| EXPLICIT
[
<CommonDirectivesForXML>
[ , XMLDATA ]
]
| PATH [ ( 'ElementName' ) ]
[
<CommonDirectivesForXML>
[ , ELEMENTS [ XSINIL | ABSENT ] ]
]
}
<CommonDirectivesForXML> ::=
[ , BINARY BASE64 ]
[ , TYPE ]
[ , ROOT [ ( 'RootName' ) ] ]
<JSON> ::=
JSON
{
{ AUTO | PATH }
[
[ , ROOT [ ( 'RootName' ) ] ]
[ , INCLUDE_NULL_VALUES ]
[ , WITHOUT_ARRAY_WRAPPER ]
]
}
BÖNGÉSZÉSHEZ
BROWSE
Megadja, hogy a frissítések engedélyezve legyenek az adatok DB-Library tallózási módú kurzorban való megtekintésekor. Az alkalmazások tábláiban böngészhet, ha a tábla időbélyegoszlopot tartalmaz, a tábla egyedi indexet tartalmaz, és a FOR BROWSE beállítás az SQL Server egy példányának küldött utasítások végén SELECT található.
Note
A beállítást tartalmazó FOR BROWSE utasításban SELECT nem használható<lock_hint> HOLDLOCK.
FOR BROWSEnem jelenhet meg az UNION operátor által összekapcsolt utasításokbanSELECT.
Note
Ha egy tábla egyedi indexkulcsoszlopai null értékűek, és a tábla egy külső illesztés belső oldalán található, a tallózási mód nem támogatja az indexet.
A tallózási mód lehetővé teszi az SQL Server-tábla sorainak vizsgálatát és a tábla adatainak frissítését egyszerre egy sorban. Ha tallózási módban szeretne hozzáférni egy SQL Server-táblához az alkalmazásban, az alábbi két lehetőség egyikét kell használnia:
Az
SELECTSQL Server-tábla adatainak eléréséhez használt utasításnak kulcsszavakkalFOR BROWSEkell végződnie. Amikor bekapcsolja aFOR BROWSEtallózási mód használatát, ideiglenes táblák jönnek létre.A tallózási mód bekapcsolásához a következő Transact-SQL utasítást kell futtatnia a
NO_BROWSETABLEbeállítással:SET NO_BROWSETABLE ON;A beállítás bekapcsolásakor
NO_BROWSETABLEazSELECTösszes utasítás úgy viselkedik, mintha aFOR BROWSEbeállítás hozzá van fűzve az utasításokhoz. A beállítás azonban nem hozza létre azokat az ideiglenes táblákat,NO_BROWSETABLEamelyeket aFOR BROWSEbeállítás általában az eredmények alkalmazásba való küldéséhez használ.
Ha egy utasítást tartalmazó OUTER JOIN lekérdezéssel SELECT próbál hozzáférni az SQL Server-táblák adataihoz, és az utasítás belső oldalán OUTER JOIN található táblában egyedi index van meghatározva, a tallózási mód nem támogatja az egyedi indexet. A tallózási mód csak akkor támogatja az egyedi indexet, ha az összes egyedi indexkulcs-oszlop elfogad NULL értékeket. A tallózási mód nem támogatja az egyedi indexet, ha az alábbi feltételek teljesülnek:
Az SQL Server-táblák adatait tallózási módban próbálhatja meg elérni egy
SELECTutasítástOUTER JOINtartalmazó lekérdezéssel.Az utasítás belső oldalán
OUTER JOINtalálható táblában egyedi index van definiálva.
Ennek a viselkedésnek a tallózási módban való reprodukálásához kövesse az alábbi lépéseket:
Az SQL Server Management Studióban hozzon létre egy adatbázist
SampleDB.SampleDBAz adatbázisban hozzon létre egy tábláttleftés egy tábláttright, amely mindkettő egyetlen, elnevezettc1oszlopot tartalmaz. Adjon meg egy egyedi indexet ac1táblatleftoszlopában, és állítsa be az oszlopotNULLértékek elfogadására. Ehhez futtassa a következő Transact-SQL utasításokat egy megfelelő lekérdezési ablakban:CREATE TABLE tleft (c1 INT NULL UNIQUE); GO CREATE TABLE tright (c1 INT NULL); GOSzúrjon be több értéket a
tlefttáblába és atrighttáblába. Ügyeljen arra, hogyNULLértéket szúrjon be atlefttáblába. Ehhez futtassa a következő Transact-SQL utasításokat a lekérdezési ablakban:INSERT INTO tleft VALUES (2); INSERT INTO tleft VALUES (NULL); INSERT INTO tright VALUES (1); INSERT INTO tright VALUES (3); INSERT INTO tright VALUES (NULL);Kapcsolja be a
NO_BROWSETABLEbeállítást. Ehhez futtassa a következő Transact-SQL utasításokat a lekérdezési ablakban:SET NO_BROWSETABLE ON;A
tlefttáblában és atrighttáblában lévő adatokat egy külső illesztési utasítással érheti el aSELECTlekérdezésben. Győződjön meg arról, hogy atlefttábla a külső illesztés utasításának belső oldalán található. Ehhez futtassa a következő Transact-SQL utasításokat a lekérdezési ablakban:SELECT tleft.c1 FROM tleft RIGHT OUTER JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2;Figyelje meg a következő kimenetet az Eredmények panelen:
c1 --- NULL NULL
Miután futtatta a lekérdezést SELECT a táblák tallózási módban való eléréséhez, a SELECT lekérdezés eredményhalmaza két NULL értéket tartalmaz a c1tleft tábla oszlopához az utasítás definíciója RIGHT OUTER JOIN miatt. Ezért az eredményhalmazban nem lehet különbséget tenni a NULL táblából származó értékek és az NULLRIGHT OUTER JOIN utasítás által bevezetett értékek között. Helytelen eredményeket kaphat, ha a lekérdezésnek figyelmen kívül kell hagynia az NULL eredményhalmaz értékeit.
Note
Ha az egyedi indexben szereplő oszlopok nem fogadnak el NULL értékeket, az NULL eredményhalmaz összes értékét az RIGHT OUTER JOIN utasítás vezette be.
XML-hez
XML
Megadja, hogy a lekérdezés eredményeit XML-dokumentumként kell visszaadni. A következő XML-módok egyikét kell megadni: RAW, AUTO, EXPLICIT. További információ az XML-adatokról és az SQL Serverről: FOR XML (SQL Server).
RAW [ ('ElemNév') ]
Felveszi a lekérdezés eredményét, és az eredményhalmaz minden sorát XML-elemgé alakítja, amely általános azonosítót <row /> elemcímkeként. Megadhat egy nevet a sorelemnek. Az eredményként kapott XML-kimenet a megadott ElementName használja az egyes sorokhoz létrehozott sorelemként. További információ: A RAW mód használata AZ XML-fájllal.
AUTO
A lekérdezési eredményeket egy egyszerű, beágyazott XML-fában adja vissza. A FROM záradék minden táblája, amelynek legalább egy oszlopa szerepel a SELECT záradékban, XML-elemként jelenik meg. A SELECT záradékban felsorolt oszlopok a megfelelő elemattribútumokra vannak leképezve. További információ: Automatikus mód használata AZ XML-fájllal.
EXPLICIT
Megadja, hogy az eredményül kapott XML-fa alakja explicit módon legyen definiálva. Ennek a módnak a használatával lekérdezéseket kell írnia, hogy explicit módon további információkat adjanak meg a kívánt beágyazásról. További információ: Explicit mód használata AZ XML-hez.
XMLDATA
Beágyazott XDR-sémát ad vissza, de nem adja hozzá a gyökérelemet az eredményhez. Ha megadja XMLDATA, az XDR-séma hozzá lesz fűzve a dokumentumhoz.
Important
Az XMLDATA irányelv elavult. Használja az XSD-generációt és AUTO a RAW módokat. A módban lévő irányelv EXPLICIT nem helyettesít.XMLDATA Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
A nem kívánt sortörések mellőzése: Az SQL Server Management Studio (SSMS) használatával futtathat egy, a záradékot használó lekérdezést FOR XML . Néha nagy mennyiségű XML jelenik meg és jelenik meg egy rácscellában. Az XML-sztring hosszabb lehet, mint egy SSMS-rácscella egyetlen sorban. Ezekben az esetekben az SSMS sortörési karaktereket szúrhat be a teljes XML-sztring hosszú szegmensei közé. Ilyen sortörések előfordulhatnak egy olyan részszúrás közepén, amelyet nem szabad szétosztani a sorok között. Az öntött AS XMLDATAhasználatával megakadályozhatja a sortöréseket. Ez a megoldás a FOR JSON PATHhasználatakor is alkalmazható, ahogyan az alábbi Transact-SQL minta SELECT utasításban is szerepel:
SELECT CAST (
(SELECT column1,
column2
FROM my_table
FOR XML PATH ('')) AS VARCHAR (MAX)
) AS XMLDATA;
XMLSCHEMA [ ('TargetNameSpaceURI' ) ]
Beágyazott XSD-sémát ad vissza. Az irányelv megadásakor megadhatja a célnévtér URI-ját, amely a séma megadott névterét adja vissza. További információ: Beágyazott XSD-séma létrehozása.
ELEMENTS
Megadja, hogy az oszlopok alelemekként legyenek visszaadva. Ellenkező esetben a lekérdezés XML-attribútumokhoz rendeli őket. Ez a beállítás csak a RAW, AUTOés PATH a módok esetén támogatott. További információ: A RAW mód használata AZ XML-fájllal.
XSINIL
Azt adja meg, hogy az oszlopértékekhez létrejön NULL egy Igaz attribútummal rendelkező xsi:nil elem. Ezt a beállítást csak az ELEMENTS irányelvvel adhatja meg. További információ:
ABSENT
Azt jelzi, hogy az oszlopértékek esetében NULL a megfelelő XML-elemek nem lesznek hozzáadva az XML-eredményhez. Ezt a beállítást csak a beállítással ELEMENTSadhatja meg.
PATH [ ('ElemNév') ]
Létrehoz egy <row> elemburkolót az eredményhalmaz minden sorához. Igény szerint megadhatja a <row> elemburkoló elemnevét. Ha üres sztringet ad meg, például FOR XML PATH (''))egy burkolóelemet nem hoz létre. A PATH használata egyszerűbb alternatívát kínálhat a EXPLICIT irányelvvel írt lekérdezések helyett. További információ: A PATH mód használata AZ XML-fájllal.
BINÁRIS BASE64
Megadja, hogy a lekérdezés bináris alap64 kódolású formátumban adja vissza a bináris adatokat. Ha bináris adatokat kér le a használatával RAW és EXPLICIT módjával, meg kell adnia ezt a beállítást. Ez a beállítás az alapértelmezett mód AUTO .
TYPE
Megadja, hogy a lekérdezés xml- típusként adja vissza az eredményeket. További információ: TYPE direktíva AZ XML-lekérdezésekben.
ROOT [ ('RootName') ]
Megadja, hogy a rendszer egyetlen legfelső szintű elemet adjon hozzá az eredményül kapott XML-fájlhoz. Igény szerint megadhatja a létrehozandó gyökérelem nevét. Ha nem adja meg a gyökérnevet, a rendszer hozzáadja az alapértelmezett <root> elemet.
További információ: XML (SQL Server).
Example
Az alábbi példa FOR XML AUTO a TYPE és XMLSCHEMA beállításokkal. A beállítás miatt a TYPE lekérdezés az eredményhalmazt xml-típusként adja vissza az ügyfélnek. A XMLSCHEMA beállítás azt határozza meg, hogy a beágyazott XSD-séma szerepel-e a visszaadott XML-adatokban, a ELEMENTS beállítás pedig azt határozza meg, hogy az XML-eredmény elemközpontú.
USE AdventureWorks2025;
SELECT p.BusinessEntityID,
FirstName,
LastName,
PhoneNumber AS Phone
FROM Person.Person AS p
INNER JOIN Person.PersonPhone AS pph
ON p.BusinessEntityID = pph.BusinessEntityID
WHERE LastName LIKE 'G%'
ORDER BY LastName, FirstName
FOR XML AUTO, TYPE, XMLSCHEMA, ELEMENTS XSINIL;
JSON-hoz
Remarks
A Fabric Data Warehouse-ban a lekérdezésnek a következővel FOR JSONkell végződnie, így nem használhatja az al lekérdezésekben.
JSON
Adja meg, hogy egy JSON-szövegként formázott lekérdezés eredményeit adja vissza FOR JSON . A következő JSON-módok egyikét is meg kell adnia: AUTO vagy PATH. További információ a FOR JSON záradékról: Lekérdezési eredmények formázása JSON-ként a FOR JSON használatával.
AUTO
A JSON-kimenetet automatikusan formázza a SELECT utasítás struktúrája alapján a FOR JSON AUTOmegadásával. További információkért és példákért lásd: A JSON-kimenet automatikus formázása AUTOMATIKUS módban.
PATH
A JSON-kimenet formátumának teljes vezérlése FOR JSON PATHmegadásával.
PATH mód lehetővé teszi burkolóobjektumok létrehozását és összetett tulajdonságok beágyazását. További információkért és példákért lásd: Beágyazott JSON-kimenet formázása PATH módban.
INCLUDE_NULL_VALUES
Adjon meg NULL értékeket a JSON-kimenetben a INCLUDE_NULL_VALUES beállítás megadásával a FOR JSON záradékkal. Ha nem adja meg ezt a beállítást, a kimenet nem tartalmazza NULL értékek JSON-tulajdonságait a lekérdezés eredményében. További információkért és példákért lásd: Null értékek belefoglalása a JSON-ban – INCLUDE_NULL_VALUES beállítás.
ROOT [ ('RootName') ]
Adjon hozzá egyetlen legfelső szintű elemet a JSON-kimenethez a ROOT beállítás megadásával a FOR JSON záradékkal. Ha nem adja meg a ROOT beállítást, a JSON-kimenetnek nincs gyökéreleme. További információkért és példákért lásd: Gyökércsomópont hozzáadása a JSON-kimenethez a ROOT beállítással.
WITHOUT_ARRAY_WRAPPER
A JSON-kimenetet alapértelmezés szerint körülvevő szögletes zárójelek eltávolításához adja meg a WITHOUT_ARRAY_WRAPPER beállítást a FOR JSON záradékkal. Ha nem adja meg ezt a beállítást, a JSON-kimenet szögletes zárójelek közé kerül. A WITHOUT_ARRAY_WRAPPER beállítással egyetlen JSON-objektumot hozhat létre kimenetként. További információért lásd: Szögletes zárójelek eltávolítása a JSON-ból – WITHOUT_ARRAY_WRAPPER opció.
További információ: Lekérdezési eredmények formázása JSON-ként a FOR JSON használatával.