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
A FOR záradék használatával adja meg a lekérdezési eredmények alábbi beállításainak egyikét.
Az
FOR BROWSEmegadásával engedélyezheti a frissítéseket a lekérdezési eredmények böngészési módban történő megjelenítésekor.A lekérdezési eredmények formázása XML-fájlként a
FOR XMLmegadásával.A lekérdezési eredmények formázása JSON-ként a
FOR JSONmegadásával.
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. Ha a tábla időbélyeget oszlopot tartalmaz, a tábla egyedi indexet tartalmaz, a FOR BROWSE beállítás pedig az SQL Server egy példányának küldött SELECT utasítások végén található.
Note
A <LOCK_HINT> HOLDLOCK nem használható a TALLÓZÁS LEHETŐSÉGET tartalmazó SELECT utasításban.
A FOR BROWSE nem jelenik meg az UNION operátor által csatlakoztatott SELECT utasításokban.
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ó, az indexet nem támogatja a tallózási mód.
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 SQL Server-tábla adatainak eléréséhez használt SELECT utasításnak a BROWSE kulcsszavakkal kell végződnie. Ha bekapcsolja a TALLÓZÁS beállítást a tallózási mód használatához, ideiglenes táblák jönnek létre.
A tallózási mód bekapcsolásához az alábbi Transact-SQL utasítást kell futtatnia a NO_BROWSETABLE beállítással:
SET NO_BROWSETABLE ONA NO_BROWSETABLE beállítás bekapcsolásakor az összes SELECT utasítás úgy viselkedik, mintha a FOR BROWSE beállítás hozzá van fűzve az utasításokhoz. A NO_BROWSETABLE beállítás azonban nem hozza létre azokat az ideiglenes táblákat, amelyeket az FOR BROWSE beállítás általában az eredmények alkalmazásba való küldéséhez használ.
Ha tallózási módban próbál hozzáférni az SQL Server-táblák adataihoz egy külső illesztési utasítást tartalmazó SELECT lekérdezéssel, és ha a külső illesztési utasítás belső oldalán 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 képes elfogadni 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ákból tallózó módban próbál hozzáférni az adatokhoz egy külső illesztési utasítást tartalmazó SELECT lekérdezéssel.
A külső illesztés utasításának belső oldalán talá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
SampleDBnevű adatbázist.Az
SampleDBadatbázisban hozzon létre egytlefttáblát és egytrighttáblát, amely egyc1nevű oszlopot 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) ; GOKapcsolja 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 ; GOA
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 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 SELECT lekérdezést 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 c1 tábla tleft oszlopához a jobb oldali külső illesztés utasítás definíciója miatt. Ezért az eredményhalmazban nem lehet különbséget tenni a táblázatból származó NULL értékek és a jobb oldali külső illesztés utasítás által bevezetett NULL értékek között. Helytelen eredményeket kaphat, ha figyelmen kívül kell hagynia az eredményhalmaz NULL értékeit.
Note
Ha az egyedi indexben szereplő oszlopok nem fogadnak el NULL értékeket, az eredményhalmaz összes NULL értékét a jobb oldali külső illesztés utasítása 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ó: RAW mód használata a FOR XML.
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 a FOR XML.
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 a lekérdezéseket meghatározott módon kell megírni, hogy a kívánt beágyazással kapcsolatos további információk explicit módon legyenek megadva. További információ: EXPLICIT mód használata AZ XML-.
XMLDATA
Beágyazott XDR-sémát ad vissza, de nem adja hozzá a gyökérelemet az eredményhez. Ha XMLDATA van megadva, az XDR-séma hozzá lesz fűzve a dokumentumhoz.
Important
A XMLDATA irányelv elavult. Használjon XSD-generációt a RAW és az AUTO mód esetén. A XMLDATA irányelv EXPLICIT módban nem helyettesít. 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 letiltása: Az SQL Server Management Studio (SSMS) használatával kiadhat egy lekérdezést, amely a FOR XML záradékot használja. 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 a sorok között felosztani. 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 rendszer XML-attribútumokra van leképezve. Ez a beállítás csak RAW, AUTO és PATH módokban támogatott. További információ: RAW mód használata a FOR XML.
XSINIL
Megadja, hogy xsi:nil oszlopértékekhez attribútummal rendelkező elem NULL legyen létrehozva. Ez a beállítás csak ELEMENTS irányelvvel adható meg. További információ:
ABSENT
Azt jelzi, hogy NULL oszlopértékek esetében a megfelelő XML-elemek nem lesznek hozzáadva az XML-eredményhez. Ezt a beállítást csak az ELEMENTS elemekkel adja 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 sztring van megadva, például FOR XML PATH ('') ), a burkolóelem nem jön 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ó: PATH mód használata AZ XML-.
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 RAW és EXPLICIT módban, ezt a beállítást meg kell adni. Ez az alapértelmezett AUTO módban.
TYPE
Megadja, hogy a lekérdezés xml- típusként adja vissza az eredményeket. További információ: TÍPUS irányelv az XML-lekérdezések.
ROOT [ ('RootName') ]
Megadja, hogy egyetlen legfelső szintű elem legyen hozzáadva az eredményül kapott XML-hez. Igény szerint megadhatja a létrehozandó gyökérelem nevét. Ha a választható gyökérnév nincs megadva, a rendszer hozzáadja az alapértelmezett <root> elemet.
További információ: FOR XML (SQL Server).
Example
Az alábbi példa FOR XML AUTO a TYPE és XMLSCHEMA beállításokkal. A TYPE beállítás miatt az eredményhalmaz xml- típusként lesz visszaadva 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 AdventureWorks2022;
GO
SELECT p.BusinessEntityID, FirstName, LastName, PhoneNumber AS Phone
FROM Person.Person AS p
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 FOR JSON kell lennie a lekérdezés utolsó operátorának, ezért nem engedélyezett az al lekérdezésekben.
JSON
Adja meg a FOR JSON értéket egy JSON-szövegként formázott lekérdezés eredményeinek visszaadásához. Az alábbi JSON-módok egyikét is meg kell adnia: AUTO vagy PATH. A FOR JSON záradékról további információt a Lekérdezési eredmények formázása JSON-ként a FOR JSON (SQL Server)című cikkben talál.
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: JSON-kimenet automatikus formázása automatikus móddal (SQL Server).
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ó és példák: Beágyazott JSON-kimenet formázása PATH móddal (SQL Server).
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-kimenetbe az INCLUDE_NULL_VALUES beállítással (SQL Server).
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 GYÖKÉR beállítással (SQL Server).
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ó: Szögletes zárójelek eltávolítása a JSON-kimenetből az WITHOUT_ARRAY_WRAPPER beállítással (SQL Server).
További információ: Lekérdezési eredmények formázása JSON-ként a FOR JSON (SQL Server).