Programování

Funkce Oracle CHR

Jednou z prezentací, které jsem si užil na Rocky Mountain Oracle Users Group (RMOUG) Training Days 2010, byla prezentace Stephena Jacksona „Používání SQL ke generování SQL.“ Použil jsem některé z technik, o nichž hovořil ve své prezentaci, aby SQL generoval SQL, ale jednu věc, o které mě nenapadlo, bylo použít funkci CHR, aby byly skripty čitelnější. Ačkoli se tento příspěvek zaměřuje na použití implementace řetězcové funkce Oracle CHR, ostatní databáze také podporují funkci CHR (nebo CHAR).

Jedním z příkladů užitečnosti CHR je vytváření výsledků, které zahrnují znaky, které jsou významné v samotném dotazu. Správné použití CHR umožňuje vývojáři SQL vyhnout se potřebě uniknout těmto znakům s významem syntaxe dotazu. Chcete-li například vytisknout příjmení zaměstnanců v ukázkovém schématu HR společnosti Oracle s jednoduchými uvozovkami obklopujícími příjmení, můžete napsat dotaz takto:

vyberte '' '|| příjmení || '' 'od zaměstnanců; 

Čtyři jednoduché uvozovky úspěšně unikly uvozovce před i za příjmením. Bohužel může být snadné se v nabídkách ztratit, zejména u složitějších dotazů. Protože desetinný kód ASCII 39 produkuje při předání CHR jednoduchou nabídku, výraz CHR (39) lze použít místo toho, jak je znázorněno dále:

vyberte CHR (39) || příjmení || CHR (39) od zaměstnanců; 

Pro mě je to čitelnější. Podobně lze pomocí funkce CHR zobrazit i obtížnější znaky. Například Stephen ve své prezentaci poukázal na to, že CHR (10) lze použít k vytištění nového řádku ve výstupu.

Jedním ze zajímavých nápadů, o kterých Stephen diskutoval, bylo použití jednoduchého skriptu k zobrazení různých reprezentací znaků dostupných prostřednictvím funkce CHR. Jeden může vždy odkazovat na zdroj, jako je Tech na ASCII grafu Net nebo asciitable.com, ale je zajímavé jednoduše zobrazit reprezentace pomocí kódu:

- displayCHR.sql - - Zobrazí znaky spojené se základními a rozšířenými kódy ASCII. - SET head off SET pageize 0 SET linesize 120 SET trimspool on SET feedback off SET SET off off server serverput on size 5000 BEGIN FOR i IN 32..255 loop Dbms_output.put_line (i || '' || chr (i)) ; KONEC smyčky; KONEC; / 

Výše uvedený fragment kódu po spuštění v SQL * Plus zobrazí velké množství znaků dostupných v základní a rozšířené znakové sadě ASCII. Pomocí příkazu spool lze zařadit výstup do souboru. Na mém počítači se systémem Windows jsem byl dokonce schopen zobrazit tyto generované symboly ve výstupním souboru pro souběžný tisk pomocí základní aplikace Poznámkový blok.

Závěr

Jak Stephen ve své prezentaci zdůraznil, díky funkci CHR mohou být skripty SQL * Plus čitelnější a udržovatelnější.

Tento příběh, „Funkce Oracle CHR“, byl původně publikován společností JavaWorld.

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