Opisywanie partii
Partie języka T-SQL to kolekcje co najmniej jednej instrukcji języka T-SQL przesyłanej do programu SQL Server przez klienta jako pojedynczą jednostkę. Program SQL Server działa na wszystkich instrukcjach w partii w tym samym czasie podczas analizowania, optymalizowania i wykonywania kodu.
Jeśli jesteś osobą piszącą raporty, która zwykle pisze zapytania przy użyciu instrukcji SELECT, a nie procedur, nadal ważne jest, aby zrozumieć granice oddzielania operacji batch. Te granice będą mieć wpływ na twoją pracę nad zmiennymi i parametrami w procedurach składowanych i innych rutynach. Na przykład zmienna musi być zadeklarowana w tej samej sekcji, w której jest używana. Dlatego ważne jest, aby rozpoznać, co znajduje się w partii.
Partie są rozdzielane przez aplikację kliencką. Sposób oznaczania końca partii zależy od ustawień klienta. W przypadku klientów firmy Microsoft, w tym programu SQL Server Management Studio (SSMS), programu Azure Data Studio i narzędzia SQLCMD słowo kluczowe to GO.
W tym przykładzie istnieją dwie odrębne partie, z których każda kończy się poleceniem GO.
CREATE NEW <view_name>
AS ...
GO
CREATE PROCEDURE <procedure_name>
AS ...
GO
Terminator wsadowy GO nie jest słowem kluczowym T-SQL, ale jest rozpoznawany przez program SSMS w celu wskazania końca partii.
Podczas pracy z partiami języka T-SQL należy pamiętać o dwóch ważnych kwestiach:
- Serie to granice zakresu zmiennych, co oznacza, że zmienna zdefiniowana w jednej serii może być przywołana tylko przez inny kod w tej samej serii.
- Niektóre instrukcje, zazwyczaj instrukcje definicji danych, takie jak CREATE VIEW, CREATE FUNCTION i CREATE PROCEDURE, mogą nie być łączone z innymi w tej samej partii.
Praca z partiami
Partia to kolekcja instrukcji języka T-SQL przesłanych do programu SQL Server na potrzeby analizowania i wykonywania. Zrozumienie sposobu analizowania partii będzie przydatne podczas identyfikowania komunikatów o błędach i zachowania. Gdy partia jest przesyłana przez klienta, na przykład po naciśnięciu przycisku Wykonaj w programie SSMS, partia jest analizowana pod kątem błędów składni przez aparat programu SQL Server. Wszystkie znalezione błędy spowodują odrzucenie całej partii danych; w partii nie będzie częściowego wykonywania poleceń.
Jeśli partia przejdzie sprawdzanie składni, program SQL Server uruchamia inne kroki, rozpoznawanie nazw obiektów, sprawdzanie uprawnień i optymalizowanie kodu do wykonania. Po zakończeniu tego procesu i rozpoczęciu wykonywania, każda instrukcja kończy się powodzeniem lub niepowodzeniem oddzielnie. Jest to ważny kontrast w sprawdzaniu składni. Jeśli w jednym wierszu wystąpi błąd środowiska uruchomieniowego, może zostać wykonany następny wiersz, chyba że dodano obsługę błędów do kodu.
Na przykład następująca partia zawiera błąd składni:
INSERT INTO dbo.t1 VALUE(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO
Zostanie wyświetlony następujący komunikat o błędzie:
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'VALUE'.
Wystąpił błąd w wierszu 1, ale cała partia jest odrzucana, a wykonanie nie jest kontynuowane z wierszem 2. Nawet jeśli każda z instrukcji INSERT została odwrócona i wystąpił błąd składniowy w drugim wierszu, pierwszy wiersz nie zostanie wykonany, ponieważ cała partia zostanie odrzucona.
W poprzednim przykładzie ta partia nie zawiera błędu:
INSERT INTO dbo.t1 VALUES(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO
W poprzednich przykładach użyliśmy instrukcji INSERT, a nie SELECT, ponieważ jest to bardziej typowe, aby instrukcje modyfikacji były grupowane w partiach niż instrukcje SELECT.