今回の備忘録を書くことにした理由
2023年3月、文系未経験の新卒として入社した会社での実務が開始して半年ほどが経過した頃、今までまったく触れた経験のないPL/SQLの案件へ唐突にアサインされることとなりました。
PL/SQLに関する研修や勉強期間等も設けられないままなんやかんやで開発がスタートしましたが、いかんせんややマイナーな言語であるため調べてもあまり情報がヒットせず…。案の定基礎的な部分で躓きまくっている(現在進行形)ため、ひとまず業務で学んだことを忘れないように簡単にですがまとめていこうと考え記事にしました。
SQL中で変数を使用する方法
PL/SQLなんだからそりゃそうでしょうという感じではありますが、宣言した変数をそのまま使えるので直感的にSQLを書くことができるという話を会社の先輩から教わり、少し感動しました。以前VB.netの開発を行った際(DBはOracle)はバインド変数を使用し、当時はバインド変数が何者かもよく分かっていませんでしたので困惑した記憶がありますが、PL/SQLでは以下のように簡単に書くことが可能でした。
なお以下の例はかなり雑にまとめています。実務ではFUNCTIONの呼び出し元でカーソルからフェッチした値を引数に指定し、FUNCTIONの方でその引数をSELECT文のWHERE句の条件にするような形で使用しました。
例: WHERE句で使用する
// NUMという名前のNUMBER型の変数を宣言する。
NUM NUMBER;
// SELECT結果格納用変数を宣言する。
RESULT VARCHAR2(100);
// NUMに5を代入する。
NUM := 5;
// 年齢が5歳(※NUMの値によって変化)の生徒の名前を取得して変数RESULTに格納する。
SELECT NAME
INTO RESULT
FROM STUDENT
WHERE AGE = NUM
;
まとめ
正直備忘録を書くほどの内容でもなく、プログラミング全般の知識が浅いため内容に誤りがあるかもしれませんが、細切れでもアウトプットしていくことによって理解が深まるかなと思いますので簡単にまとめてみました。まだ案件は継続中なので後日また学びを得ることができましたら追記・修正を行っていきたいと思います。