ホームページ >php教程 >PHP开发 >SQL のストアド プロシージャと関数の違い

SQL のストアド プロシージャと関数の違い

高洛峰
高洛峰オリジナル
2016-12-14 14:51:041994ブラウズ

本質的には違いはありません。ただ、この関数には変数を 1 つしか返せないという制限があります。ストアド プロシージャは複数を返すことができます。関数は SQL に埋め込むことができ、select で呼び出すことができますが、ストアド プロシージャは埋め込むことができません。実行の本質は同じです。
関数には多くの制限があります。たとえば、一時テーブルは使用できず、テーブル変数のみが使用可能です。また一部ご利用いただけない機能等もございます。ストアド プロシージャには比較的制限が少ないです
1. 一般に、ストアド プロシージャによって実装される関数はより複雑ですが、関数によって実装される関数はよりターゲットが絞られています。
2. ストアド プロシージャの場合はパラメーターを返すことができますが、関数は値またはテーブル オブジェクトのみを返すことができます。
3. ストアド プロシージャは通常、独立した部分として実行されますが (EXEC 実行)、関数はクエリ ステートメントの一部として呼び出すことができます (SELECT 呼び出し)。関数はテーブル オブジェクトを返すことができるため、クエリ ステートメント内で使用できます。 FROM キーワードの後に​​あります。
4. ストアド プロシージャと関数が実行されると、SQL マネージャーはプロシージャ キャッシュに移動して、対応するクエリ ステートメントを取得します。プロシージャ キャッシュに対応するクエリ ステートメントがない場合、SQL マネージャーはストアド プロシージャとストアド関数をコンパイルします。
プロシージャ キャッシュには実行計画 (実行計画) が保存されます。コンパイル後、SQL SERVER は各実行の実際の状況に基づいて、この計画をキャッシュに保存するかどうかを検討します。判断基準の 1 つは、この実行プランが使用される頻度です。2 つ目は、このプランを生成するコスト、つまりコンパイルにかかる時間です。キャッシュに保存されたプランは、次回実行時にコンパイルする必要はありません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。