Ohjelmointi

Oracle CHR -toiminto

Yksi esityksistä, josta nautin Rocky Mountain Oracle Users Group (RMOUG) Training Days 2010 -tapahtumassa, oli Stephen Jacksonin esitys "SQL: n käyttö SQL: n luomiseen". Olen käyttänyt joitain tekniikoita, joista hän puhui esityksessään saadakseen SQL: n luomaan SQL: n, mutta yksi asia, jota en ollut ajatellut tehdä, oli käyttää CHR-toimintoa komentosarjojen luettavuuden parantamiseksi. Vaikka tämä viesti keskittyy Oraclen CHR-merkkijonofunktion toteuttamiseen, muut tietokannat tukevat myös CHR (tai CHAR) -toimintoa.

Yksi esimerkki CHR: n hyödyllisyydestä on luoda tuloksia, jotka sisältävät merkkejä, jotka ovat merkityksellisiä itse kyselyssä. CHR: n asianmukainen käyttö sallii SQL-kehittäjän välttää tarvetta välttää näitä merkkejä kyselyn syntaksin merkityksellä. Esimerkiksi tulostaaksesi Oraclen HR-mallikaavion työntekijöiden sukunimet yksittäisillä lainausmerkeillä sukunimien ympärille, voisi kirjoittaa seuraavanlaisen kyselyn:

valitse '' '' || sukunimi || '' '' työntekijöiltä; 

Neljä yksittäistä lainausmerkkiä onnistuu välttämään lainausmerkin sekä ennen sukunimeä että sen jälkeen. Valitettavasti lainausmerkkeihin voi helposti kadota, etenkin monimutkaisempien kyselyjen yhteydessä. Koska ASCII-desimaalikoodi 39 tuottaa yhden lainauksen, kun se välitetään CHR: lle, lauseke CHR (39) voidaan käyttää sen sijaan seuraavalla tavalla:

valitse CHR (39) || sukunimi || CHR (39) työntekijöiltä; 

Minulle tämä on helpommin luettavissa. Vastaavasti CHR-toiminnolla voidaan esittää vielä vaikeampia merkkejä. Esimerkiksi Stephen huomautti esityksessään, että CHR (10): llä voidaan tulostaa uusi rivi.

Yksi mielenkiintoisista ajatuksista, joista Stephen keskusteli, oli yksinkertaisen komentosarjan käyttö CHR-toiminnon kautta saatavien erilaisten merkkien esittämiseksi. Aina voi viitata Resurssiin, kuten Tech, Netin ASCII-kaavioon tai asciitable.com-sivustoon, mutta on mielenkiintoista näyttää esitykset yksinkertaisesti koodilla:

- displayCHR.sql - - Näytä perus- ja laajennettuihin ASCII-koodeihin liittyvät merkit. - SET head off SET-sivukoko 0 SET-rivikoko 120 SET trim-puoli päällä SET-palaute pois SET-vahvistus pois SET-palvelimen lähtö koossa 5000 BEGIN FOR i IN 32..255 silmukka Dbms_output.put_line (i || '' || chr (i)) ; END-silmukka; END; / 

Yllä oleva koodinpätkä, kun se suoritetaan SQL * Plus -ohjelmassa, näyttää suuren määrän merkkejä, jotka ovat käytettävissä perus- ja laajennetussa ASCII-merkistössä. Rullauskomennolla voidaan kelata ulostulo tiedostoon. Windows-koneellani pystyin jopa tarkastelemaan näitä luotuja symboleja taustatulostustiedostossa Notepad-perussovelluksella.

Johtopäätös

Kuten Stephen huomautti esityksessään, CHR-toiminto voi tehdä SQL * Plus -skripteistä helpommin luettavia ja ylläpidettäviä.

Tämän tarinan, "Oracle CHR Function", julkaisi alun perin JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found