Programavimas

„Oracle CHR“ funkcija

Vienas iš pranešimų, kuris man patiko „Rocky Mountain Oracle Users Group“ (RMOUG) mokymų dienose 2010, buvo Stepheno Jacksono pranešimas „SQL naudojimas generuojant SQL“. Aš naudoju kai kuriuos metodus, kuriuos jis aptarė savo pristatyme, norėdamas, kad SQL sugeneruotų SQL, tačiau vienas dalykas, apie kurį aš negalvojau padaryti, buvo naudoti CHR funkciją, kad scenarijai būtų lengviau skaitomi. Nors šiame įraše daugiausia dėmesio skiriama „Oracle“ CHR eilutės funkcijos įgyvendinimui, kitos duomenų bazės taip pat palaiko CHR (arba CHAR) funkciją.

Vienas iš CHR naudingumo pavyzdžių yra rezultatų, apimančių simbolius, reikšmingus pačioje užklausoje, kūrimas. Tinkamai naudojant CHR, SQL kūrėjas gali išvengti poreikio pabėgti iš šių simbolių su reikšme užklausos sintaksėje. Pvz., Norint atspausdinti darbuotojų pavardes „Oracle“ HR pavyzdžių schemoje pavienėmis kabutėmis aplink pavardes, galima parašyti tokią užklausą:

pasirinkti '' '' || pavardė || iš darbuotojų; 

Keturios vienos kabutės sėkmingai išvengia kabutės tiek prieš pavardę, tiek po jos. Deja, gali būti lengva pasimesti kabutėse, ypač esant sudėtingesnėms užklausoms. Kadangi ASCII dešimtainis kodas 39 sukuria vieną citatą, kai jis perduodamas CHR, išraiška CHR (39) galima naudoti vietoj to, kaip parodyta toliau:

pasirinkti CHR (39) || pavardė || CHR (39) iš darbuotojų; 

Man tai lengviau įskaitoma. Panašiai su CHR funkcija galima pavaizduoti dar sunkesnius simbolius. Pavyzdžiui, Stephenas savo pristatyme nurodė, kad CHR (10) galima naudoti, kad išvestyje būtų atspausdinta nauja eilutė.

Viena iš įdomių idėjų, kurią Stephenas aptarė, buvo paprasto scenarijaus naudojimas norint parodyti įvairius simbolių vaizdus, ​​pasiekiamus per CHR funkciją. „Net's ASCII Chart“ arba „asciitable.com“ visada galima nurodyti tokį šaltinį kaip „Tech“, tačiau įdomu paprasčiausiai parodyti vaizdus per kodą:

- displayCHR.sql - - Rodomi simboliai, susieti su pagrindiniais ir išplėstiniais ASCII kodais. - SET galvutė išjungta SET puslapių dydis 0 SET eilutės 120 SET trimpool įjungtas SET grįžtamasis ryšys išjungtas SET patikrinimas išjungtas SET serverio išvestis, kai dydis 5000 BEGIN FOR i IN 32..255 kilpa Dbms_output.put_line (i || '' || chr (i)) ; END kilpa; GALAS; / 

Pirmiau pateiktas kodo fragmentas, vykdomas sistemoje „SQL * Plus“, parodys daugybę simbolių, galimų pagrindiniame ir išplėstiniame ASCII simbolių rinkinyje. Norėdami susukti išvestį į failą, galite naudoti komandą „Ritė“. Savo „Windows“ kompiuteryje netgi galėjau peržiūrėti šiuos sugeneruotus simbolius susuktame išvesties faile, naudodamas pagrindinę „Notepad“ programą.

Išvada

Kaip savo pranešime pabrėžė Stephenas, CHR funkcija gali padaryti „SQL * Plus“ scenarijus labiau įskaitomus ir prižiūrimus.

Šią istoriją „Oracle CHR Function“ iš pradžių paskelbė „JavaWorld“.