cfqueryparamまたはcfprocparamをコーディングする場合、cfsqltypeはオプションです。しかし、私は通常、それがコード化されているのを見ました。 cfsqltypeを指定する利点はありますか?cfsqltypeを使用していますか?
答えて
主な利点は、照会入力を照会に渡す前に、照会入力の健全性検査のレベルを上げることです。また、日付の時刻値の場合、cfsqltype = "CF_SQL_DATE"または "CF_SQL_TIMESTAMP"が指定されていると、CFはdatetime文字列を適切なデータベース形式に正しく変換すると考えています。
また、将来の開発者がコードを読むときに除外されるタイプをより明確にすることができると思います。
私はJakeさんのコメントに追加します。ほとんどのRDBMSでは、データベースは、適切な型であることを保証するために型参照を介して変数を実行する必要があります。または、暗黙的に適切な型にキャストできます。 DBは単にテーブルまたはビューに "Any Any"という変数を投げるだけではありません。実行計画に適切な型付けを組み込む必要があります。したがって、タイプを指定しない場合は、DBに「把握する」ことを求めています。
ただし、タイプを指定するときは、データ型を先取りするか事前に修飾します。エンジンは、ドライバが特定のタイプの変数を提示していることを知っており、それを直接使用するか、または直接それを派生させることができます。
セキュリティはcfqueryparamを使用する正当な理由ですが、それが唯一の理由であることに注意してください。もう1つの理由は、効率的に実行でき、理想的にはDBサーバー上の実行計画キャッシュを「ポップ」するように、正しく準備されたステートメントを作成することです。
+1。再:* ..あなたはDBを "それを把握"するように求めています。* ..そして結果はいつもあなたが意図したものではありません。暗黙の変換を避ける方が良い。 – Leigh
ありがとう、良い点。ちょうど興味のない - それはデータベースのデータ型を一致させるための余分なオーバーヘッドがかかりますか? (dbは時間を費やさなければならないので、cfsqltypeなしで実行するには少し時間がかかります) – froadie
Froadie - ある程度のオーバーヘッドがあります。あなたはそれを見ないでしょうが、私はcfsqltypeを使用しないと考えることはできません: –
- 1. MS-SQLのCFQueryParam/cfsqltype varchar(max)データ型
- 2. TypedFactoryFacilityを使用していますか?
- 3. アプリケーションフレームワークを使用していますか?
- 4. アンドロイドカスタムアクションバーを使用していますか?
- 5. ブーストエンディアンを使用していますか?
- 6. Wicket:PropertyResolverを使用していますか?
- 7. rownumを使用していますか?
- 8. osgi:ServiceFactoriesを使用していますか?
- 9. JavaScriptを使用していますか?
- 10. ウェブフォントを使用していますか?
- 11. カスタムプログレスバーを使用していますか?
- 12. プラグインを使用していますか?
- 13. font-size:100.01%をまだ使用していますか、どのブラウザに使用していますか?
- 14. ブラウザがどのフォントを使用していてCSSを使用しているかを確認しますか?
- 15. 使用していますか? URL
- 16. jQueryを使用してWCFサービスを使用しています
- 17. wsdlを使用してWebサービスを使用しています
- 18. Rubyでキーワード引数を使用して(:send)を使用していますか?
- 19. COSMOSデータ移行ツールを使用してRUを使用していますか?
- 20. Google BigQueryを使用しており、Compute Engineを使用していますか?
- 21. シンボリックリンクを使用してvimで 'gf'を使用していますか?
- 22. MicrosoftはVisual Studioを使用してVisual Studioを使用していますか?
- 23. Mongoose findOneを使用して関数を定義していない関数を使用していますか?
- 24. linkchildfieldを使用してサブフォームをフィルタリングしていますか?
- 25. LDAPを使用してCNを抽出していますか?
- 26. ビューを使用してドキュメントIDをフィルタリングしていますか?
- 27. C++を使用してfastcgiを実装していますか?
- 28. DOMを使用してHTMLを追加していますか?
- 29. コマンドラインを使用してPDFを照会していますか?
- 30. ISNULLを使用して値を設定していますか?
CFは真偽値をCF_SQL_BIT(1または0)に変換し、任意の数値をCF_SQL_INT(丸め)に変換します。 – Henry
よく表現された答えをありがとう!私はこれらが理由のいくつかであると考えましたが、文書を見つけることができず、これは非常に明確で簡潔です – froadie