準備された文は、データベースアプリケーションの開発で使用されます。これにより、データベースアプリケーションに使用する言語のメソッドで、プレースホルダを持つ SQL 文を使用することができます。
プレースホルダは、値のみを表すことができ、テーブル名など、データベースオブジェクト名を表すことはできません。プレースホルダとして、疑問符 (?) または変数名 (:input) のいずれかを使用することができます。同じ変数名を複数回使用する場合は、複数のパラメータがあることを表しています。
準備された文が単純な SQL 文よりも優れている点は、以下のとおりです。
● 複数回使用される場合でも、データベースシステムによる解析は 1 回で済むため、より効率的です (共有 SQL を参照)。
● SQL ロジックとユーザが指定するデータを分離することによって、ユーザが意図的に不正な値を指定するリスク (SQL インジェクションのリスク) を低減することができ、より安全です。MaxDB セキュリティガイド、SQL 文のユーザ入力のチェックを参照してください。
以下の MaxDB インタフェースで、準備された文を使用することができます。
MaxDB インタフェース:準備された文
Interface |
実装 |
JDBC |
クラス PreparedStatement |
ODBC |
メソッド SQLPrepare |
SQLDBC |
クラス SQLDBC_PrepareStatement |
PHP |
maxdb_prepare |
Perl |
prepare |
Python |
MaxDB SQLDBC インタフェースの準備された文の例を以下に示します。
SQLDBC_PrepareStatement *stmt = conn->createPreparedStatement();
SQLDBC_Retcode rc = stmt->prepare("SELECT * FROM CUSTOMER");
if (rc != SQLDBC_OK) {
// Handle error ...
}
rc = stmt->execute();
if (rc != SQLDBC_OK) {
// Handle error ...
}