SQL-muuttujat: SQL Server Declare, Set and Select Variable
Mikรค on muuttuja SQL Serverissรค?
MS SQL:ssรค muuttujat ovat objekti, joka toimii muistipaikan paikkamerkkinรค. Muuttuja pitรครค yksittรคisen dataarvon.
SQL:n muuttujatyypit: paikallinen, globaali
MS SQL:ssรค on kahdenlaisia โโmuuttujia:
- Paikallinen muuttuja
- Globaali muuttuja.
Kรคyttรคjรค voi kuitenkin luoda vain paikallisen muuttujan.
Alla oleva kuva selittรครค kahden tyyppisiรค muuttujia, jotka ovat kรคytettรคvissรค MS SQL -palvelin.

Paikallinen muuttuja
- Kรคyttรคjรค ilmoittaa paikallisen muuttujan.
- Oletuksena paikallinen muuttuja alkaa @.
- Jokaisella paikallisella muuttujan laajuudella on rajoitus nykyinen erรค tai menettely minkรค tahansa istunnon aikana.
Globaali muuttuja
- Jรคrjestelmรค yllรคpitรครค globaalia muuttujaa. Kรคyttรคjรค ei voi ilmoittaa niitรค.
- Globaali muuttuja alkaa @@
- Se tallentaa istuntoon liittyvรคt tiedot.
Kuinka ILMOITTAA muuttuja SQL:ssรค
- Ennen kuin kรคytรคt muuttujia erรคssรค tai menettelyssรค, sinun on tehtรคvรค se ilmoittaa muuttuja.
- DECLARE-komentoa kรคytetรครคn DECLARE-muuttujaan, joka toimii muistipaikan paikkamerkkinรค.
- Vasta kun ilmoitus on tehty, muuttujaa voidaan kรคyttรครค erรคn tai menettelyn seuraavassa osassa.
TSQL-syntaksi:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Sรครคnnรถt:
- Alustus on valinnainen asia ilmoittamisen yhteydessรค.
- Oletusarvoisesti DECLARE alustaa muuttujan arvoon NULL.
- Avainsanan "AS" kรคyttรถ on valinnaista.
- Jos haluat ilmoittaa useamman kuin yhden paikallisen muuttujan, kรคytรค pilkkua ensimmรคisen paikallismuuttujan mรครคritelmรคn jรคlkeen ja mรครคritรค sitten seuraavan paikallisen muuttujan nimi ja tietotyyppi.
Esimerkkejรค muuttujan ilmoittamisesta
Kysely: "AS"
DECLARE @COURSE_ID AS INT;
Kysely: ilman "AS"
DECLARE @COURSE_NAME VARCHAR (10);
Kysely: ILMOITTAA kaksi muuttujaa
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Arvon mรครคrittรคminen SQL-muuttujalle
Voit mรครคrittรครค muuttujalle arvon seuraavassa kolmella tavalla:
- Muuttujan mรครคrityksen aikana DECLARE-avainsanalla.
- SET-toiminnolla
- Kรคyttรคmรคllรค SELECT
Katsotaanpa kaikkia kolmea tapaa yksityiskohtaisesti:
Muuttujan mรครคrityksen aikana DECLARE-avainsanalla
T-SQL-syntaksi:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Tรคssรค tietotyypin jรคlkeen voimme kรคyttรครค '=', jota seuraa mรครคritettรคvรค arvo
kysely:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
SQL SET VARIABLE:n kรคyttรถ
Joskus haluamme pitรครค ilmoituksen ja alustuksen erillรครคn. SET:tรค voidaan kรคyttรครค arvojen mรครคrittรคmiseen muuttujalle, muuttujan ilmoittamisen jรคlkeen. Alla on erilaisia โโtapoja mรครคrittรครค arvoja SET:n avulla:
esimerkki: Arvon antaminen muuttujalle SET-komennolla
Syntaksi:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
kysely:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
esimerkki: Mรครคritรค arvo useita muuttujia kรคyttรคmรคllรค SET-toimintoa.
Syntaksi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Sรครคntรถ: Yhtรค SET-avainsanaa voidaan kรคyttรครค vain arvon mรครคrittรคmiseen yksi muuttuja.
kysely:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
esimerkki: Arvon antaminen muuttujalle a:lla Skalaari-alikysely kรคyttรคmรคllรค SET-toimintoa
Syntaksi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Sรครคnnรถt:
- Laita kysely sulkeisiin.
- Kyselyn tulee olla skalaarikysely. Skalaarikysely on kysely, jonka tulokset ovat vain yksi rivi ja yksi sarake. Muussa tapauksessa kysely antaa virheilmoituksen.
- Jos kysely palauttaa nolla riviรค, muuttujaksi asetetaan EMPTY, eli NULL.
Oletus: Oletetaan, ettรค meillรค on taulukko "Guru99", jossa on kaksi saraketta, kuten alla nรคytetรครคn:
Kรคytรคmme 'Guru99'-taulukkoa muissa opetusohjelmissa
Esimerkki 1: Kun alikysely palauttaa yhden rivin tuloksena.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Esimerkki 2: Kun alikysely palauttaa tuloksena nollan rivin
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Tรคssรค nimenomaisessa tapauksessa muuttujan arvo on EMPTY, eli NULL.
SQL SELECT VARIABLE:n kรคyttรถ
Aivan kuten SET, voimme myรถs kรคyttรครค SELECT-toimintoa arvojen mรครคrittรคmiseen muuttujille ja muuttujan ilmoittamisen jรคlkeen kรคyttรคmรคllรค DECLARE-toimintoa. Alla on erilaisia โโtapoja mรครคrittรครค arvo kรคyttรคmรคllรค SELECT:
esimerkki: Arvon antaminen muuttujalle SELECT-toiminnolla
Syntaksi:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
kysely:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
esimerkki: Arvon mรครคrittรคminen usealle muuttujalle SELECT-toiminnolla
Syntaksi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Sรครคnnรถt: Toisin kuin SET, SELECT:tรค voidaan kรคyttรครค arvon mรครคrittรคmiseen useisiin muuttujiin erottaa momentti.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
esimerkki: Arvon mรครคrittรคminen muuttujalle alikyselyllรค SELECT-toiminnolla
Syntaksi:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Sรครคnnรถt:
- Liitรค kysely sulkuihin.
- Kyselyn tulee olla skalaarikysely. Skalaarikysely on kysely, jonka tuloksena on yksi rivi ja yksi sarake. Muussa tapauksessa kysely antaa virheilmoituksen.
- Jos kysely palauttaa nolla riviรค, muuttuja on EMPTY, eli NULL.
- Harkitse 'Guru99'-pรถytรครคmme uudelleen
Esimerkki 1: Kun alikysely palauttaa yhden rivin tuloksena.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Esimerkki 2: Kun alikysely palauttaa tuloksena nollan rivin
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Tรคssรค nimenomaisessa tapauksessa muuttuja on EMPTY, eli NULL.
Esimerkki 3: Anna muuttujalle arvo tavallisella SELECT-kรคskyllรค.
Syntaksi:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Sรครคnnรถt:
- Toisin kuin SET, jos kysely johtaa useisiin riveihin, muuttujan arvoksi asetetaan viimeisen rivin arvo.
- Jos kysely palauttaa nolla riviรค, muuttujaksi asetetaan EMPTY, eli NULL.
Kysely 1: Kysely palauttaa yhden rivin.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Kysely 2: Kysely palauttaa useita rivejรค.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Tรคssรค erikoistapauksessa muuttuva arvo on asetetaan viimeisen rivin arvoon.
Kysely 3: Kysely palauttaa nolla riviรค.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Tรคssรค nimenomaisessa tapauksessa muuttuja on EMPTY, eli NULL.
Muita esimerkkejรค SQL-muuttujista
Muuttujan kรคyttรคminen kyselyssรค
kysely:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Mielenkiintoisia faktoja SQL Serverin muuttujista!
- Paikallinen muuttuja voidaan nรคyttรครค kรคyttรคmรคllรค PRINT- ja SELECT COMMAND -komentoja
- Taulukon tietotyyppi ei salli 'AS':n kรคyttรถรค ilmoituksen aikana.
- SET on ANSI-standardien mukainen, kun taas SELECT ei.
- Paikallisen muuttujan luominen nimellรค @ on myรถs sallittua. Voimme ilmoittaa sen esimerkiksi seuraavasti:
'DECLARE @@ as VARCHAR (10)'
Yhteenveto
- Muuttujat ovat objekti, joka toimii paikkamerkkinรค.
- Muuttujia on kahta tyyppiรค: paikallinen ja globaali
- Voimme mรครคrittรครค muuttujan seuraavilla kolmella tavalla: Kรคytettรคessรค 1) DECLARE 2) kรคyttรคmรคllรค SET 3) KรYTTรร SELECT














