Zmienne SQL: SQL Server deklaruje, ustawia i wybiera zmienną
Co to jest zmienna w SQL Server?
W MS SQL zmienne są obiektem, który pełni funkcję elementu zastępczego lokalizacji w pamięci. Zmienna przechowuje pojedynczą wartość danych.
Typy zmiennych w SQL: lokalne, globalne
MS SQL ma dwa typy zmiennych:
- Zmienna lokalna
- Zmienna globalna.
Jednak użytkownik może utworzyć tylko zmienną lokalną.
Poniższy rysunek wyjaśnia dwa typy zmiennych dostępnych w Serwer MSSQL.

Zmienna lokalna
- Użytkownik deklaruje zmienną lokalną.
- Domyślnie zmienna lokalna zaczyna się od @.
- Każdy zasięg zmiennej lokalnej ma ograniczenie do bieżąca partia lub procedura w ramach dowolnej sesji.
Zmienna globalna
- System utrzymuje zmienną globalną. Użytkownik nie może ich zadeklarować.
- Zmienna globalna zaczyna się od @@
- Przechowuje informacje związane z sesją.
Jak zadeklarować zmienną w SQL
- Zanim użyjesz jakiejkolwiek zmiennej w partii lub procedurze, musisz to zrobić zadeklaruj zmienną.
- Polecenie DECLARE służy do DECLARE zmiennej, która pełni funkcję symbolu zastępczego lokalizacji pamięci.
- Dopiero po złożeniu deklaracji zmienna może zostać wykorzystana w dalszej części partii lub procedury.
Składnia TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
zasady:
- Inicjowanie jest opcjonalną rzeczą podczas deklarowania.
- Domyślnie DECLARE inicjuje zmienną na NULL.
- Użycie słowa kluczowego „AS” jest opcjonalne.
- Aby zadeklarować więcej niż jedną zmienną lokalną, należy po definicji pierwszej zmiennej lokalnej postawić przecinek, a następnie zdefiniować nazwę kolejnej zmiennej lokalnej i typ danych.
Przykłady deklarowania zmiennej
Zapytanie: z „AS”
DECLARE @COURSE_ID AS INT;
Zapytanie: bez „AS”
DECLARE @COURSE_NAME VARCHAR (10);
Zapytanie: Zdeklaruj dwie zmienne
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Przypisanie wartości do zmiennej SQL
Możesz przypisać wartość zmiennej w następujący sposób trzy sposoby:
- Podczas deklaracji zmiennej przy użyciu słowa kluczowego DECLARE.
- Korzystanie z SET
- Używając WYBIERZ
Przyjrzyjmy się szczegółowo wszystkim trzem sposobom:
Podczas deklaracji zmiennej przy użyciu słowa kluczowego DECLARE
Składnia T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Tutaj po typie danych możemy użyć znaku „=”, po którym następuje wartość, która ma zostać przypisana
zapytanie:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Korzystanie z zmiennej SQL SET
Czasami chcemy zachować deklarację i inicjalizację oddzielnie. Zestawu SET można użyć do przypisania wartości do zmiennej po zadeklarowaniu zmiennej. Poniżej przedstawiono różne sposoby przypisywania wartości za pomocą zestawu SET:
Przykład: Przypisywanie wartości do zmiennej za pomocą SET
Składnia:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
zapytanie:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Przykład: Przypisz wartość do wiele zmiennych za pomocą SET.
Składnia:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Reguła: Do przypisania wartości można użyć tylko jednego słowa kluczowego SET jedna zmienna.
zapytanie:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Przykład: Przypisanie wartości do zmiennej za pomocą a Podzapytanie skalarne za pomocą SET
Składnia:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
zasady:
- Umieść zapytanie w nawiasie.
- Zapytanie powinno być zapytaniem skalarnym. Zapytanie skalarne to zapytanie, którego wyniki stanowią tylko jeden wiersz i jedną kolumnę. W przeciwnym razie zapytanie zgłosi błąd.
- Jeśli zapytanie zwróci zero wierszy, wówczas zmienna jest ustawiana na PUSTY, tj. NULL.
Założenie: Załóżmy, że mamy tabelę o nazwie „Guru99” z dwiema kolumnami, jak pokazano poniżej:
W dalszych tutorialach będziemy używać tabeli „Guru99”.
1 przykład: Gdy podzapytanie zwraca w rezultacie jeden wiersz.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Przykład 2: Gdy podzapytanie zwraca w rezultacie wiersz zerowy
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
W tym konkretnym przypadku wartość zmiennej jest PUSTA, tj. NULL.
Korzystanie z SQL WYBIERZ ZMIENNĄ
Podobnie jak w przypadku SET, możemy również użyć SELECT do przypisania wartości do zmiennych, po zadeklarowaniu zmiennej za pomocą DECLARE. Poniżej znajdują się różne sposoby przypisania wartości za pomocą SELECT:
Przykład: Przypisywanie wartości do zmiennej za pomocą SELECT
Składnia:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
zapytanie:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Przykład: Przypisywanie wartości do wielu zmiennych za pomocą SELECT
Składnia:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
zasady: W przeciwieństwie do SET, SELECT można wykorzystać do przypisania wartości do wielu zmiennych oddzielone przez przecinek.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Przykład: Przypisywanie wartości do zmiennej z podzapytaniem za pomocą SELECT
Składnia:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
zasady:
- Umieścić zapytanie w nawiasie.
- Zapytanie powinno być zapytaniem skalarnym. Zapytanie skalarne to zapytanie z wynikiem w postaci jednego wiersza i jednej kolumny. W przeciwnym razie zapytanie zgłosi błąd.
- Jeśli zapytanie zwróci zero wierszy, wówczas zmienna jest PUSTA, tj. NULL.
- Rozważmy ponownie naszą tabelę „Guru99”.
1 przykład: Gdy podzapytanie zwraca w rezultacie jeden wiersz.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
2 przykład: Gdy podzapytanie zwraca w rezultacie wiersz zerowy
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
W tym konkretnym przypadku zmienna ma wartość PUSTA, tj. NULL.
3 przykład: Przypisz wartość do zmiennej za pomocą zwykłej instrukcji SELECT.
Składnia:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
zasady:
- W przeciwieństwie do SET, jeśli zapytanie daje wiele wierszy, wówczas wartość zmiennej jest ustawiana na wartość z ostatniego wiersza.
- Jeśli zapytanie zwróci zero wierszy, wówczas zmienna jest ustawiana na PUSTY, tj. NULL.
Zapytanie 1: Zapytanie zwraca jeden wiersz.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Zapytanie 2: Zapytanie zwraca wiele wierszy.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
W tym szczególnym przypadku wartość zmiennej to ustaw na wartość ostatniego wiersza.
Zapytanie 3: Zapytanie zwraca zero wierszy.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
W tym konkretnym przypadku zmienna jest PUSTA, tj. NULL.
Inne przykłady zmiennych SQL
Użycie zmiennej w zapytaniu
zapytanie:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Interesujące fakty na temat zmiennych SQL Server!
- Zmienną lokalną można wyświetlić za pomocą polecenia PRINT oraz SELECT
- Tabela Typ danych nie pozwala na użycie „AS” podczas deklaracji.
- SET jest zgodny ze standardami ANSI, podczas gdy SELECT nie.
- Dozwolone jest także tworzenie zmiennej lokalnej o nazwie @. Możemy to zadeklarować tak, na przykład:
'DECLARE @@ as VARCHAR (10)'
Podsumowanie
- Zmienne są obiektem, który pełni rolę symbolu zastępczego.
- Istnieją dwa typy zmiennych: lokalne i globalne
- Możemy przypisać zmienną na trzy następujące sposoby: Używając 1) DECLARE 2) Używając SET 3) UŻYWAJĄC SELECT