ユーザー定義変数を宣言する
DEFINE は置換変数の宣言と代入を行なうためのコマンド
SET DEFINE コマンド(DEFINE システム変数) は置換変数の接頭語を定義するための SQL*Plus コマンド
ユーザー定義変数と似た置換変数という用語がある。
置換変数とはユーザー定義変数、入力変数、引数と事前定義変数などをまとめた呼称。
DEFINE コマンド
DEFINE コマンドの構文
DEFINE [変数名 [ = 代入文字列 ]]
短縮形
DEF [変数名 [ = 代入文字列 ]]
DEFINE によるユーザー変数は単一行の文字列型のみ許される。複数行による代入文を使用すると改行箇所はスペース(' ')に変換される。
DEFINE 変数名 のように代入文字列を指定しないと変数の内容が表示される。
(注意)DEFINE によるユーザー定義変数はプロンプトの設定やカラムのヘッダ用に使用するためのもので SQL*Plus でのみ参照できる変数である。
ユーザーの入力をユーザー定義変数に代入
バインド変数とユーザー定義変数の間で値を代入する方法
ユーザー変数をバインド変数に代入するのは簡単にできるが、バインド変数をユーザー変数に代入するのはひと手間かかる。
--- バインド変数をユーザー定義変数に代入するのは簡単
SQL> variable bind_num number
SQL> define define_num = 999
SQL> EXECUTE :bind_num := &define_num ;
---
SQL> PRINT :bind_num
BIND_NUM
----------
999
バインド変数をユーザー定義変数に代入する
-- 準備
SQL> variable bind_num number
SQL> EXECUTE :bind_num := 777;
...
-- SQL と COLUMN コマンドを使ってユーザー変数に代入
SQL> COLUMN num_alias NEW_VALUE define_num NOPRINT
SQL> SELECT :bind_num num_alias FROM DUAL ;
...
SQL> DEFINE define_num
DEFINE DEFINE_NUM = 777 (NUMBER)
SQL*Plus 上だけで使用できる 事前定義されている変数
バインド変数
SQL(PL/SQL) とのやり取りする変数はバインド変数 VARIABLE を使用する。