10

cfqueryparam または cfprocparam をコーディングする場合、cfsqltype はオプションです。ただし、通常、コード化されているのを見てきました。cfsqltype を指定する利点はありますか?

4

2 に答える 2

16

主な利点は、クエリ入力をクエリに渡す前に、追加レベルの健全性チェックを行うことです。また、日時値の場合、cfsqltype="CF_SQL_DATE" または ="CF_SQL_TIMESTAMP" が指定されている場合、CF は日時文字列を適切なデータベース形式に適切に変換すると思います。

さらに、将来の開発者がコードを読むときに、例外の型をより明確に確認できるようになると思います。

于 2012-03-19T22:15:30.260 に答える
13

ジェイクのコメントに追加します。ほとんどの 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.

于 2012-03-19T22:37:27.787 に答える