Proměnné SQL: SQL Server deklarovat, nastavit a vybrat proměnnou
Co je to proměnná v SQL Server?
V MS SQL jsou proměnné objekt, který funguje jako zástupný symbol pro paměťové místo. Proměnná drží jednu hodnotu dat.
Typy proměnných v SQL: místní, globální
MS SQL má dva typy proměnných:
- Lokální proměnná
- Globální proměnná.
Uživatel však může vytvořit pouze lokální proměnnou.
Níže uvedený obrázek vysvětluje dva typy proměnných dostupných v MS SQL server.
Lokální proměnná
- Uživatel deklaruje lokální proměnnou.
- Ve výchozím nastavení začíná lokální proměnná na @.
- Každý rozsah lokální proměnné má omezení na aktuální šarže nebo postup v rámci jakékoli dané relace.
Globální proměnná
- Systém udržuje globální proměnnou. Uživatel je nemůže deklarovat.
- Globální proměnná začíná na @@
- Ukládá se informace týkající se relace.
Jak DECLARE proměnnou v SQL
- Před použitím jakékoli proměnné v dávce nebo postupu musíte deklarovat proměnnou.
- Příkaz DECLARE se používá k DECLARE proměnné, která funguje jako zástupný symbol pro paměťové místo.
- Teprve po provedení deklarace lze proměnnou použít v následující části dávky nebo procedury.
Syntaxe TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Pravidla:
- Inicializace je volitelná věc při deklaraci.
- Ve výchozím nastavení DECLARE inicializuje proměnnou na NULL.
- Použití klíčového slova 'AS' je volitelné.
- Chcete-li deklarovat více než jednu lokální proměnnou, použijte za první definicí lokální proměnné čárku a poté definujte název další lokální proměnné a datový typ.
Příklady deklarace proměnné
Dotaz: S 'AS'
DECLARE @COURSE_ID AS INT;
Dotaz: Bez „AS“
DECLARE @COURSE_NAME VARCHAR (10);
Dotaz: DECLARE dvě proměnné
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Přiřazení hodnoty proměnné SQL
V následujícím můžete přiřadit hodnotu proměnné tři způsoby:
- Během deklarace proměnné pomocí klíčového slova DECLARE.
- Pomocí SET
- Pomocí SELECT
Podívejme se podrobně na všechny tři způsoby:
Během deklarace proměnné pomocí klíčového slova DECLARE
Syntaxe T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Zde po datovém typu můžeme použít '=' následované hodnotou, která má být přiřazena
Dotaz:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Pomocí SQL SET VARIABLE
Někdy chceme ponechat deklaraci a inicializaci odděleně. SET lze použít k přiřazení hodnot proměnné po deklaraci proměnné. Níže jsou uvedeny různé způsoby, jak přiřadit hodnoty pomocí SET:
Příklad: Přiřazení hodnoty proměnné pomocí SET
Syntaxe:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Dotaz:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Příklad: Přiřadit hodnotu více proměnných pomocí SET.
Syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Pravidlo: Jedno klíčové slovo SET lze použít pouze k přiřazení hodnoty jedna proměnná.
Dotaz:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Příklad: Přiřazení hodnoty proměnné s a Skalární poddotaz pomocí SET
Syntaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Pravidla:
- Dotaz uzavřete do závorek.
- Dotaz by měl být skalární dotaz. Skalární dotaz je dotaz s výsledky jako pouze jeden řádek a jeden sloupec. V opačném případě dotaz vyvolá chybu.
- Pokud dotaz vrátí nula řádků, pak je proměnná nastavena na EMPTY, tj. NULL.
Předpoklad: Předpokládejme, že máme tabulku jako „Guru99“ se dvěma sloupci, jak je zobrazeno níže:
V dalších tutoriálech použijeme tabulku 'Guru99'
Příklad 1: Když poddotaz vrátí jeden řádek jako výsledek.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Příklad 2: Když poddotaz vrátí jako výsledek nulový řádek
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
V tomto konkrétním případě je hodnota proměnné EMPTY, tj. NULL.
Pomocí SQL SELECT VARIABLE
Stejně jako SET můžeme také použít SELECT k přiřazení hodnot proměnným po deklaraci proměnné pomocí DECLARE. Níže jsou uvedeny různé způsoby, jak přiřadit hodnotu pomocí SELECT:
Příklad: Přiřazení hodnoty proměnné pomocí SELECT
Syntaxe:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Dotaz:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Příklad: Přiřazení hodnoty více proměnným pomocí SELECT
Syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Pravidla: Na rozdíl od SET lze SELECT použít k přiřazení hodnoty na více proměnných oddělené tím čárka.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Příklad: Přiřazení hodnoty proměnné pomocí poddotazu pomocí SELECT
Syntaxe:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Pravidla:
- Dotaz uzavřete do závorek.
- Dotaz by měl být skalární dotaz. Skalární dotaz je dotaz s výsledkem jako jeden řádek a jeden sloupec. V opačném případě dotaz vyvolá chybu.
- Pokud dotaz vrátí nula řádků, pak je proměnná EMPTY, tj. NULL.
- Přehodnoťte naši tabulku 'Guru99'
Příklad 1: Když poddotaz vrátí jeden řádek jako výsledek.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Příklad 2: Když poddotaz vrátí nulový řádek jako výsledek
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
V tomto konkrétním případě je proměnná EMPTY, tj. NULL.
Příklad 3: Přiřaďte hodnotu proměnné pomocí běžného příkazu SELECT.
Syntaxe:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Pravidla:
- Na rozdíl od SET, pokud je výsledkem dotazu více řádků, pak se hodnota proměnné nastaví na hodnotu posledního řádku.
- Pokud dotaz vrátí nula řádků, pak je proměnná nastavena na EMPTY, tj. NULL.
Dotaz 1: Dotaz vrátí jeden řádek.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Dotaz 2: Dotaz vrátí více řádků.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
V tomto speciálním případě je proměnná hodnota nastavit na hodnotu posledního řádku.
Dotaz 3: Dotaz vrátí nula řádků.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
V tomto konkrétním případě je proměnná EMPTY, tj. NULL.
Další příklady proměnných SQL
Použití proměnné v dotazu
Dotaz:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Zajímavá fakta o proměnných SQL Server!
- Lokální proměnnou lze zobrazit pomocí PRINT i SELECT COMMAND
- Tabulka Datový typ neumožňuje použití 'AS' během deklarace.
- SET vyhovuje standardům ANSI, zatímco SELECT ne.
- Je také povoleno vytvoření lokální proměnné s názvem jako @. Můžeme to deklarovat např.
'DECLARE @@ as VARCHAR (10)'
Shrnutí
- Proměnné jsou objekt, který funguje jako zástupný symbol.
- Existují dva typy proměnných: místní a globální
- Proměnnou můžeme přiřadit následujícími třemi způsoby: Při použití 1) DECLARE 2) Pomocí SET 3) POMOCÍ SELECT