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:

  1. Lokální proměnná
  2. 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.

SQL proměnné
Typ proměnných v 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:

  1. Během deklarace proměnné pomocí klíčového slova DECLARE.
  2. Pomocí SET
  3. 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

Přiřazení hodnoty proměnné SQL

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

SQL SET PROMĚNNÁ

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

SQL SET PROMĚNNÁ

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:

SQL SET PROMĚNNÁ

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

SQL SET PROMĚNNÁ

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.

SQL SET PROMĚNNÁ

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

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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.

SQL SELECT VARIABLE

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

Další proměnná SQL

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