PL/SQL のエスケープ文字
PL/SQL には 改行やタブなど非表示文字を扱うためのバックスラッシュ(\) のような特殊文字はない。
改行やタブ文字を PL/SQL 上でコーディングするには CHR 関数 を使用する。
但し、CHR で改行コードを CHR(10) のように「アスキーコード」でハードコーディングするとアスキーコード・プラットホーム専用となる。(EBCDIC コードで構築した環境と互換性が無くなる。EBCDIC の環境はマイナーなので大した影響は無さそうですが…)
文字 | アスキーコード表記 | 補足 |
タブ | CHR(9) | \t 相当 |
CR | CHR(13) | \r 相当 (CTRL+M) |
LF | CHR(10) | \n 相当 (CTRL+J) |
改行 | CHR(13) || CHR(10) | Windows プラットホーム |
CHR(10) | UNIX、LINUX 系プラットホーム |
スペース | CHR(32) | |
引用符(') | CHR(39) | |
エスケープ・シーケンス
単一引用符(') を表現するための様式として単一引用符を2回連続して記述するという「シークエンス(シーケンス)」がある。
シーケンスとは 順序番号のシーケンス というより、スペースシャトル発射までの 「発射シークエンス」 という意味合いに近い。英語では同じ SEQUENCE。
元々のエスケープシーケンスとは、画面には直接表示されない文字列で、 [ESC] 文字コード + コマンド記号 + (パラメータ)というシーケンス(=定義済みの一連の動作)をあらわすものである。一般に '〜Term' と呼ばれる端末エミュレータ、VT-100 互換のターミナルエミュレータのカーソル移動なども、このエスケープシーケンス処理で行なわれている。これら様々な特殊なコマンドセットの総称をエスケープシーケンスと呼んでいる。
C言語 などの開発言語では [ESC] ではないエスケープ文字(\) + 文字 もエスケープシーケンスと呼ばれている。
文字列中の単一引用符
SQL> begin
2 dbms_output.enable();
3 dbms_output.put_line('It''s a small world.');
4 end;
5 /
It's a small world.
Oracle 10g であれば 単一引用符を別の方法で記述する方法がある。
q'〜' という 「シーケンス」 を使った 代替引用符 で読みやすい表記になる。
SQL> begin
2 dbms_output.enable();
3 dbms_output.put_line(q'<It's a small world.>');
4 end;
5 /
It's a small world.