Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Użyj klauzuli FOR , aby określić jedną z następujących opcji dla wyników zapytania.
- Określ
FOR BROWSE, aby zezwolić na aktualizacje podczas wyświetlania wyników zapytania w kursorze trybu przeglądania. - Określ
FOR XML, aby sformatować wyniki zapytania jako XML. - Określ
FOR JSON, aby sformatować wyniki zapytania w formacie JSON.
Transact-SQL konwencje składni
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 ]
]
}
DO PRZEGLĄDANIA
BROWSE
Określa, że aktualizacje są dozwolone podczas wyświetlania danych w DB-Library kursor trybu przeglądania. Tabelę można przeglądać w aplikacji, jeśli tabela zawiera kolumnę znacznika czasu , tabela ma unikatowy indeks, a FOR BROWSE opcja znajduje się na końcu SELECT instrukcji wysyłanych do wystąpienia programu SQL Server.
Note
Nie można użyć instrukcji <lock_hint> HOLDLOCK w instrukcji SELECT zawierającej FOR BROWSE tę opcję.
FOR BROWSE Nie można wyświetlić w SELECT instrukcjach, które UNION operator łączy.
Note
Gdy unikatowe kolumny klucza indeksu tabeli są dopuszczane do wartości null, a tabela znajduje się po stronie wewnętrznej sprzężenia zewnętrznego, tryb przeglądania nie obsługuje indeksu.
Tryb przeglądania umożliwia skanowanie wierszy w tabeli programu SQL Server i aktualizowanie danych w tabeli po jednym wierszu jednocześnie. Aby uzyskać dostęp do tabeli programu SQL Server w aplikacji w trybie przeglądania, należy użyć jednej z następujących dwóch opcji:
Instrukcja
SELECTużywana do uzyskiwania dostępu do danych z tabeli programu SQL Server musi kończyć się słowami kluczowymiFOR BROWSE. Po włączeniu opcji korzystania z trybu przeglądaniaFOR BROWSEtworzone są tabele tymczasowe.Należy uruchomić następującą instrukcję Transact-SQL, aby włączyć tryb przeglądania
NO_BROWSETABLEprzy użyciu opcji :SET NO_BROWSETABLE ON;Po włączeniu
NO_BROWSETABLEopcji wszystkieSELECTinstrukcje zachowują się tak, jakbyFOR BROWSEopcja została dołączona do instrukcji. Jednak opcja nie tworzy tabel tymczasowych,NO_BROWSETABLEktórychFOR BROWSEzazwyczaj używa opcja do wysyłania wyników do aplikacji.
Podczas próby uzyskania dostępu do danych z tabel programu SQL Server w trybie przeglądania przy użyciu SELECT zapytania, które obejmuje instrukcję OUTER JOIN , a gdy unikatowy indeks jest zdefiniowany w tabeli, która znajduje się po wewnętrznej stronie OUTER JOIN instrukcji, tryb przeglądania nie obsługuje indeksu unikatowego. Tryb przeglądania obsługuje unikatowy indeks tylko wtedy, gdy wszystkie unikatowe kolumny klucza indeksu mogą akceptować NULL wartości. Tryb przeglądania nie obsługuje indeksu unikatowego, jeśli spełnione są następujące warunki:
Próbujesz uzyskać dostęp do danych z tabel programu SQL Server w trybie przeglądania przy użyciu
SELECTzapytania, które obejmuje instrukcjęOUTER JOIN.Unikatowy indeks jest definiowany w tabeli, która znajduje się po wewnętrznej stronie instrukcji
OUTER JOIN.
Aby odtworzyć to zachowanie w trybie przeglądania, wykonaj następujące kroki:
W programie SQL Server Management Studio utwórz bazę danych o nazwie
SampleDB.SampleDBW bazie danych utwórz tabelę i tabelętrighttleftzawierającą jedną kolumnę o nazwiec1. Zdefiniuj unikatowy indeks w kolumniec1w tabelitlefti ustaw kolumnę tak, aby akceptowałaNULLwartości. W tym celu uruchom następujące instrukcje Transact-SQL w odpowiednim oknie zapytania:CREATE TABLE tleft (c1 INT NULL UNIQUE); GO CREATE TABLE tright (c1 INT NULL); GOWstaw kilka wartości w tabeli
tlefti tabelitright. Upewnij się, że w tabeliNULLwstawisz wartośćtleft. W tym celu uruchom następujące instrukcje Transact-SQL w oknie zapytania: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);Włącz opcję
NO_BROWSETABLE. W tym celu uruchom następujące instrukcje Transact-SQL w oknie zapytania:SET NO_BROWSETABLE ON;Uzyskaj dostęp do danych w tabeli
tlefti tabelitrightprzy użyciu instrukcji sprzężenia zewnętrznego w zapytaniuSELECT. Upewnij się, że tabelatleftznajduje się po wewnętrznej stronie instrukcji sprzężenia zewnętrznego. W tym celu uruchom następujące instrukcje Transact-SQL w oknie zapytania:SELECT tleft.c1 FROM tleft RIGHT OUTER JOIN tright ON tleft.c1 = tright.c1 WHERE tright.c1 <> 2;Zwróć uwagę na następujące dane wyjściowe w okienku wyników:
c1 --- NULL NULL
Po uruchomieniu SELECT zapytania w celu uzyskania dostępu do tabel w trybie przeglądania zestaw SELECT wyników zapytania zawiera dwie NULL wartości kolumny c1 w tleft tabeli ze względu na definicję RIGHT OUTER JOIN instrukcji. W związku z tym w zestawie wyników nie można odróżnić NULL wartości uzyskanych z tabeli i NULL wartości wprowadzonych przez instrukcję RIGHT OUTER JOIN . Jeśli zapytanie musi zignorować NULL wartości z zestawu wyników, może zostać wyświetlone nieprawidłowe wyniki.
Note
Jeśli kolumny uwzględnione w indeksie unikatowym nie akceptują NULL wartości, wszystkie NULL wartości w zestawie wyników zostały wprowadzone przez instrukcję RIGHT OUTER JOIN .
FOR XML (komenda SQL do formatowania wyników jako XML)
XML
Określa, że wyniki zapytania mają być zwracane jako dokument XML. Należy określić jeden z następujących trybów XML: RAW, AUTO, EXPLICIT. Aby uzyskać więcej informacji na temat danych XML i programu SQL Server, zobacz FOR XML (SQL Server).
RAW [ ('ElementName') ]
Pobiera wynik zapytania i przekształca każdy wiersz w zestawie wyników w element XML z identyfikatorem ogólnym <row /> jako tag elementu. Opcjonalnie możesz określić nazwę elementu wiersza. Wynikowe dane wyjściowe XML używają określonego ElementName jako elementu wiersza wygenerowanego dla każdego wiersza. Aby uzyskać więcej informacji, zobacz Use RAW mode with FOR XML (Używanie trybu RAW z językiem XML).
AUTO
Zwraca wyniki zapytania w prostym, zagnieżdżonym drzewie XML. Każda tabela w klauzuli FROM, dla której co najmniej jedna kolumna jest wymieniona w klauzuli SELECT, jest reprezentowana jako element XML. Kolumny wymienione w klauzuli SELECT są mapowane na odpowiednie atrybuty elementu. Aby uzyskać więcej informacji, zobacz Use AUTO mode with FOR XML (Używanie trybu AUTOMATYCZNEGO z językiem XML).
EXPLICIT
Określa, że kształt wynikowego drzewa XML jest zdefiniowany jawnie. Korzystając z tego trybu, należy napisać zapytania w określony sposób, aby jawnie określić dodatkowe informacje o żądanym zagnieżdżaniu. Aby uzyskać więcej informacji, zobacz Use EXPLICIT mode with FOR XML (Używanie trybu JAWNego z językiem XML).
XMLDATA
Zwraca wbudowany schemat XDR, ale nie dodaje elementu głównego do wyniku. Jeśli określisz XMLDATAwartość , schemat XDR zostanie dołączony do dokumentu.
Important
Dyrektywa XMLDATA jest przestarzała. Użyj generowania XSD dla RAW trybów i AUTO . Nie ma zamiany XMLDATA dyrektywy w EXPLICIT trybie. Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Pomijanie niepożądanych podziałów wierszy: możesz użyć programu SQL Server Management Studio (SSMS) do uruchomienia zapytania korzystającego z klauzuli FOR XML . Czasami zwracana jest duża ilość kodu XML i wyświetlana w jednej komórce siatki. Ciąg XML może być dłuższy niż jedna komórka siatki programu SSMS może być przechowywana w jednym wierszu. W takich przypadkach program SSMS może wstawić znaki podziału wiersza między długimi segmentami całego ciągu XML. Takie podziały wierszy mogą wystąpić w środku podciągu, który nie powinien być podzielony między wiersze. Można zapobiec podziałom wierszy przy użyciu rzutu AS XMLDATA. To rozwiązanie może również mieć zastosowanie w przypadku używania FOR JSON PATH, jak w poniższej instrukcji Transact-SQL przykładowej SELECT:
SELECT CAST (
(SELECT column1,
column2
FROM my_table
FOR XML PATH ('')) AS VARCHAR (MAX)
) AS XMLDATA;
XMLSCHEMA [ ('TargetNameSpaceURI') ]
Zwraca wbudowany schemat XSD. Opcjonalnie można określić docelowy identyfikator URI przestrzeni nazw podczas określania tej dyrektywy, która zwraca określoną przestrzeń nazw w schemacie. Aby uzyskać więcej informacji, zobacz Generowanie wbudowanego schematu XSD.
ELEMENTS
Określa, że kolumny są zwracane jako podelementy. W przeciwnym razie zapytanie mapuje je na atrybuty XML. Ta opcja jest obsługiwana tylko w RAWtrybach , AUTOi PATH . Aby uzyskać więcej informacji, zobacz Use RAW mode with FOR XML (Używanie trybu RAW z językiem XML).
XSINIL
Określa, że element z atrybutem xsi:nil ustawionym na True jest tworzony dla NULL wartości kolumn. Tę opcję można określić tylko za ELEMENTS pomocą dyrektywy . Aby uzyskać więcej informacji, zobacz:
ABSENT
Wskazuje, że dla NULL wartości kolumn odpowiednie elementy XML nie są dodawane w wyniku XML. Określ tę opcję tylko za pomocą ELEMENTSpolecenia .
PATH [ ('ElementName') ]
Generuje otokę elementów <row> dla każdego wiersza w zestawie wyników. Opcjonalnie możesz określić nazwę elementu dla otoki elementów <row>. Jeśli podasz pusty ciąg, taki jak FOR XML PATH ('')), element otoki nie zostanie wygenerowany. Użycie PATH może stanowić prostszą alternatywę dla zapytań napisanych przy użyciu dyrektywy EXPLICIT. Aby uzyskać więcej informacji, zobacz Use PATH mode with FOR XML (Używanie trybu PATH z językiem XML).
BINARNE BASE64
Określa, że zapytanie zwraca dane binarne w formacie binarnym zakodowanym w formacie base64. Podczas pobierania danych binarnych przy użyciu funkcji RAW i EXPLICIT trybu należy określić tę opcję. Ta opcja jest domyślna w AUTO trybie.
TYPE
Określa, że zapytanie zwraca wyniki jako typ xml. Aby uzyskać więcej informacji, zobacz dyrektywa TYPE w zapytaniach XML.
ROOT [ ('RootName') ]
Określa, że do wynikowego kodu XML jest dodawany pojedynczy element najwyższego poziomu. Opcjonalnie możesz określić nazwę elementu głównego do wygenerowania. Jeśli nie określisz nazwy głównej, <root> zostanie dodany domyślny element.
Aby uzyskać więcej informacji, zobacz FOR XML (SQL Server).
Example
Poniższy przykład określa FOR XML AUTO z opcjami TYPE i XMLSCHEMA. Ze względu na TYPE opcję zapytanie zwraca zestaw wyników klientowi jako typ xml . Opcja XMLSCHEMA określa, że wbudowany schemat XSD jest uwzględniony w zwracanych danych XML, a opcja ELEMENTS określa, że wynik XML jest skoncentrowany na elementach.
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;
DLA JSON
Remarks
W magazynie danych sieci szkieletowej zapytanie musi kończyć się ciągiem FOR JSON, aby nie można było go używać wewnątrz podzapytania.
JSON
Określ FOR JSON , aby zwrócić wyniki zapytania sformatowanego jako tekst JSON. Należy również określić jeden z następujących trybów JSON: AUTO lub PATH. Aby uzyskać więcej informacji na temat klauzuliFOR JSON, zobacz Format query results as JSON with FOR JSON (Formatowanie wyników zapytania w formacie JSON przy użyciu formatu JSON).
AUTO
Sformatuj dane wyjściowe JSON automatycznie na podstawie struktury instrukcji SELECT, określając FOR JSON AUTO. Aby uzyskać więcej informacji i przykładów, zobacz Automatyczne formatowanie danych wyjściowych JSON za pomocą trybu AUTOMATYCZNEGO.
PATH
Uzyskaj pełną kontrolę nad formatem danych wyjściowych JSON, określając FOR JSON PATH. tryb PATH umożliwia tworzenie obiektów otoki i zagnieżdżanie złożonych właściwości. Aby uzyskać więcej informacji i przykładów, zobacz Formatowanie zagnieżdżonych danych wyjściowych JSON przy użyciu trybu PATH.
INCLUDE_NULL_VALUES
Uwzględnij NULL wartości w danych wyjściowych JSON, określając opcję INCLUDE_NULL_VALUES z klauzulą FOR JSON. Jeśli nie określisz tej opcji, dane wyjściowe nie zawierają właściwości JSON dla NULL wartości w wynikach zapytania. Aby uzyskać więcej informacji i przykładów, zobacz Include Null Values in JSON - INCLUDE_NULL_VALUES Option (Uwzględnij wartości null w formacie JSON — opcja INCLUDE_NULL_VALUES).
ROOT [ ('RootName') ]
Dodaj pojedynczy element najwyższego poziomu do danych wyjściowych JSON, określając opcję ROOT z klauzulą FOR JSON. Jeśli nie określisz opcji ROOT, dane wyjściowe JSON nie mają elementu głównego. Aby uzyskać więcej informacji i przykładów, zobacz Dodawanie węzła głównego do danych wyjściowych JSON przy użyciu opcji ROOT.
WITHOUT_ARRAY_WRAPPER
Usuń nawiasy kwadratowe otaczające dane wyjściowe JSON domyślnie, określając opcję WITHOUT_ARRAY_WRAPPER z klauzulą FOR JSON. Jeśli nie określisz tej opcji, dane wyjściowe JSON są ujęte w nawiasy kwadratowe. Użyj opcji WITHOUT_ARRAY_WRAPPER, aby wygenerować pojedynczy obiekt JSON jako dane wyjściowe. Aby uzyskać więcej informacji, zobacz Usuń nawiasy kwadratowe z formatu JSON — opcja WITHOUT_ARRAY_WRAPPER.
Aby uzyskać więcej informacji, zobacz Format query results as JSON with FOR JSON (Formatowanie wyników zapytania w formacie JSON przy użyciu formatu JSON).