cfqueryparam または cfprocparam をコーディングする場合、cfsqltype はオプションです。ただし、通常、コード化されているのを見てきました。cfsqltype を指定する利点はありますか?
2 に答える
主な利点は、クエリ入力をクエリに渡す前に、追加レベルの健全性チェックを行うことです。また、日時値の場合、cfsqltype="CF_SQL_DATE" または ="CF_SQL_TIMESTAMP" が指定されている場合、CF は日時文字列を適切なデータベース形式に適切に変換すると思います。
さらに、将来の開発者がコードを読むときに、例外の型をより明確に確認できるようになると思います。
ジェイクのコメントに追加します。ほとんどの RDBMS では、変数が適切な型であること、または暗黙的に適切な型にキャストできることを保証するために、データベースは型ルックアップを通じて変数を実行する必要があります。DB は、テーブルまたはビューで「タイプ Any」の変数をスローするだけではありません。実行計画に適切な型を組み込む必要があります。したがって、タイプを指定しない場合は、DB に「それを理解する」ように求めています。
一方、型を指定すると、データ型がプリエンプトまたは事前修飾されます。エンジンは、ドライバーが特定の型の変数を提示していることを認識しており、それを直接使用したり、直接派生させたりできます。
Remember that, while security is a good reason to use cfqueryparam, it's only one reason. The other reason is to create correctly prepared statements that can executed efficiently - and ideally "pop" the execution plan cache on the DB server.