e-learning、オラクル研修、LMS(学習管理システム)のiStudy

e-learning、オラクル研修、LMS(学習管理システム)のiStudy

第43回 「動的SQLの概要」

2012.12.03

こんにちは。インストラクターの蓑島です。早いもので2012年も12月になりました。

前回まで7回にわたり「データベーストリガー」について解説してきました。
一般的な表のDMLトリガーについての基本は網羅していると思います。

今回からは「動的SQL」という新テーマで解説します!

「動的SQL」と聞いてどんなものを想像しますか?

動的SQLとは、文字列で組み立てたSQL文のことです。
例えば、PL/SQLプログラムの実行時に表名や列名などの文字列をパラメータとして受け取り、その文字列をSQL文として組み立てて実行するものです。
したがって、『SQL文そのものはプログラムの実行時まで決定されません。』

それに対して、今までこのメルマガでご紹介していたPL/SQLブロック内のSQL文は、すべて「埋め込みSQL文」です。埋め込みSQL文は文字列ではありません。
つまりそのSQL文はシングルコーテーションで囲まれておらず、直接ブロック内に記述します。
埋め込みSQL文の大きな特徴は、そのSQL文中で変数を使用できる部分は、「値」に限られるということです。
すなわち、INSERTやUPDATEする列の値や、問い合わせの条件の値などです。
しかしそれ以外の部分(表名や列名など)に対して変数は使用できませんので、埋め込みの場合は、『SQL文そのものは、処理する値は別として、プログラムの作成時(実行時ではない)に決定されている』のです。

処理する内容によっては、実行時まで表名や列名などSQL文が決定しないことも多いですが、そのような場合は動的SQLを使えば対応できます。

このメルマガを読んでいただいている方はアプリケーション開発者の方が多いと思いますが、一般的に何らかのプログラム言語からデータベースにアクセスするためには、JDBCやODBCといったドライバを経由します。
その場合、そこで扱うSQL文は文字列(例えばダブルコーテーションで囲んでいる)なので、動的SQLです。
例外としてPRO*CやPRO*COBOL、SQLJといったプリコンパイラを使うようなパターンでは、埋め込みSQLですが、少数派かと思います。
したがって、皆さんが普段アプリケーションを開発するなかで記述しているSQL文は動的SQLが多いと思います。

とうことで動的SQLは別に特別なものではありません。
その動的SQLをPL/SQLブロック内でも実行できるということで、そのやり方をこれから数回にわたりご紹介したいと思います。

今回は概要だけの紹介なので、ピンとこなかった方もいるかもしれませんが、次回以降は例を示しながら解説しますので安心してください。

では次回にご期待ください!

先頭へ戻る