amikor elkezdtem bekerülni strukturált lekérdezés nyelv (SQL) körül 2014, emlékszem súroló az interneten példákat. Azt látom, hogy az emberek olyan dolgokat mondanak, mint: “ez dinamikus SQL-t használ “vagy” ez a szkript dinamikus.”Bár láttam a példákat, nem igazán értettem azokat az összetevőket, amelyek “dinamikussá” tették, mert új voltam. Ahogy több tapasztalatot szereztem a területen, nem csak a dinamikus SQL-t alkotó három komponenst tanultam meg, hanem azt is, hogyan kell alkalmazni a különböző felhasználási esetekre., Ez a rövid bevezetés célja, hogy segítsen SQL kezdők, vagy bárki más, jobban megértsék a komponensek dinamikus SQL.
példák adatai
a Kaggle-n elérhető opciós piaci kereskedési adatokat használom, ha érdekel.
mi a dinamikus SQL?
bár az alkalmazás bonyolult lehet, A dinamikus SQL meghatározása valójában egyszerű:
A dinamikus SQL egy SQL utasítás, amely futásidőben épül fel.
Ez lehetővé teszi egy általános célú lekérdezés elkészítését, valamint a változók használatával a menet közben végrehajtandó utasítás összeállítását., A super basic dynamic SQL alábbi példáját dekonstruálom:
DECLARE @dynamic_sql NVARCHAR(max)select @dynamic_sql = 'select * from orderFlow'EXEC(@dynamic_sql)
a dinamikus SQL ellentéte statikus SQL, amely egy SQL utasítás, amely futásidőben nem változik. Például:
SELECT * FROM orderFlow
észreveszi a különbséget? A statikus SQL nem fut egy execute parancsot, sem épített változók.
három lépés a dinamikus SQL írásához
ha dinamikus SQL-t szeretne írni, emlékezzen a három összetevőre:
- deklarálja a változókat
gondoljon arra, hogy a változókat építőelemként használja az SQL utasításhoz., A példában deklaráltam egy dynamic_sql nevű változót, majd megadtam neki az Nvarchar(max) adattípust. A max segítségével megadom a legtöbb helyet az SQL utasítás megadásához.
DECLARE @dynamic_sql NVARCHAR(max)
2. Construct SQL String
az a tény, hogy megadhat bármilyen SQL szeretne a változó dynamic_sql része, ami ezt a példát dinamikus SQL az első helyen! Mivel vissza akarom adni az összes eredményt a táblázatból, orderFlow, beállítom a változót egy egyszerű select utasításra, amely hiba nélkül végrehajtható.
select @dynamic_sql = 'select * from orderFlow '
3., Az SQL utasítás végrehajtása
a második lépésben beépített nyilatkozatot végre kell hajtani. Az EXEC parancsot általában a tárolt eljárások futtatására használják, de futtathat bármilyen legitim SQL utasítást, amelyet karakterláncként tárolnak, mint például a változó dynamic_sql.
EXEC(@dynamic_sql)
képzelje el, hogy olyan felhasználói felülettel dolgozik, amely szöveges mezővel rendelkezik, amely lehetővé teszi a felhasználó számára, hogy nyers SQL-nyilatkozatot írjon be, majd végrehajtja ezt a kijelentést, amikor a felhasználó rákattint. Hasonló funkciókat használtam az üzleti intelligencia termékekben!, Most, hogy ismeri a dinamikus SQL-t, könnyű elképzelni, hogyan működik a színfalak mögött.