OBをトコトン極める

Oracle バインド変数を使ってみよう

  • 2018.10.15
  • 株式会社システムインテグレータ
Oracle バインド変数を使ってみよう

システム開発の場面では、繰り返しとなるSQLの構文解析(ハードパース)抑制やSQLインジェクション対策としてバインド変数を使用している方が多いと思いますが、実はSI Object Browser(以下、OB)でも使用することが可能です。

バインド変数はOBのSQL実行画面において使用可能となっています。
まずは、バインド変数の記述の仕方をご紹介していきます。

バインド変数の記述

言語や環境によってバインド変数の記述は異なりますが、OBでバインド変数を扱う場合は「半角コロン+名前」の形式で記述します。
例えば、SELECT文のWHERE句で検索条件の値にバインド変数を使用する場合は以下の通りです。

SELECT * FROM table_name WHERE column_1 = :value

上記の「:value」がバインド変数となるわけですが、名前の部分については任意で構いません。
値の意味がわかりやすい名前をつけるのもよいですし、数が多くて面倒な場合は「:1」「:2」などでもよいでしょう。

それでは、SQL実行画面で実際に使用してみましょう。

SQL実行画面におけるバインド変数の使用

SQL実行画面を開いてバインド変数を使用したSQLを記載・実行ボタンを押下すると、画面右側にバインド変数の値を入力するリストが表示されます。

データベース開発に関するお役立ち資料

1

- 図1. SQL実行画面 – バインド変数リスト -

バインド変数リストでは以下の指定を行います。
値:バインド変数に代入する値を指定します。
型:バインド変数を文字列型として扱う場合の厳密な型指定を行います。
(空欄の場合、OBが自動的に文字列型の解釈を行います)

値を入力して再度実行ボタンを押下するとSQLが実行されます。

2

- 図2. 実行結果 -

バインド変数リストで指定を行った「ID=1」のレコードが検索されました。 バインド変数リストが表示された状態であれば、続けてバインド変数値を変更、実行ボタンの押下で変更結果を確認することが可能です。

3

- 図3. バインド変数値の変更と再実行 -

また、検索条件としての指定だけではなく、INSERT文の値指定などにもバインド変数を使用することが可能です。

4

- 図4.バインド変数を使用したINSERT文の実行 -

まとめ

いかがでしたか?
今回ご紹介したように、OBではバインド変数の値を一か所で管理することが可能になっています。

一か所にまとめて管理することで、
・もっと条件の多い複雑なSQLで検索条件を簡易に変更したい
・どのような値を指定してSQLを実行したか、のエビデンスを取りたい
といったケースを強力にサポートしてくれます。

バージョンによって多少の差異はありますが、OBの基本的な機能ですのでぜひお試しください!

いまさら聞けない Oracleの基本

いまさら聞けない Oracleの基本