ストアド プロシージャと関数、特定のタスクを実行するために使用されるデータベース オブジェクトに含まれる SQL ステートメントのコレクション (またはデータ サイエンスでも使用できます)。この 2 つは多くの点で異なります。
この記事では、関数と手順、およびそれらの違いについて詳しく説明します。
ストアド プロシージャから始めましょう -
単純に記述された SQL コードは、何度も再利用できるように保存され、ストアド プロシージャを形成します。頻繁に作成するクエリを思いついた場合は、それをストアド プロシージャとして保存し、そのストアド プロシージャを呼び出して、ストアド プロシージャの一部として保存した SQL コードを実行できます。これにより、同じ質問を何度も書く必要がなくなります。
同じ SQL コードを繰り返し実行して、ストアド プロシージャにパラメータを指定できます。必要に応じて、ストアド プロシージャは、指定されたパラメーター値に基づいて適切に応答します。
パフォーマンスはストアド プロシージャによって強化することもできます。一連の SQL ステートメントは、複数のタスクを実行するために使用されます。次にどの SQL ステートメントが実行されるかは、最初の SQL ステートメントと条件付きロジックの結果によって異なります。これらの SQL ステートメントとそれに含まれる条件ロジックは、ストアド プロシージャに書き込むことで、サーバー上で 1 つの実行プランに結合できます。すべての作業はサーバー上で実行されるため、結果をクライアントに渡さずに条件付きロジックを実行できます。
各ストアド プロシージャは SQL Server によって一度コンパイルされ、実行プランが再利用されます。ストアド プロシージャを頻繁に呼び出すと、パフォーマンスが大幅に向上します。
環境内でネットワーク帯域幅が問題になる場合は、ストアド プロシージャを使用すると、長い SQL 検索を 1 行に圧縮して、ネットワーク経由で送信できることを知っておいてください。
ストアド プロシージャは、多くのユーザー アプリケーションおよびクライアント アプリケーションで使用できます。計画的に使用すると、開発サイクルを完了するまでの時間が短縮されます。
基になるテーブルに対するアクセス許可に関係なく、ストアド プロシージャを実行するためのアクセス許可をユーザーに提供できます。
SQL Server は 2 種類の関数をサポートします
組み込み関数は Transact-SQL 参照定義に従って動作し、変更できません。 Transact-SQL リファレンスで確立された構文に従う Transact-SQL ステートメントのみが、これらの関数をリファレンスとして使用できます。
システムはこれらの関数をすでに定義しています。 2 つのカテゴリに分類されます -
このチュートリアルでは、次の表を参照します -
#ID ######名前###### ######マーク###### ######年###### | 1 | ######厳しい###### 90 | 19 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | 確かに | 50 | 20 | |||||||||||||||
3 | プラティック | 80 |
######21######
|
|||||||||||||||
ダンラージ | 95 | 19 |
|
|||||||||||||||
######ラム###### 85 | 18 |
|
|
パラメータ |
入力値 |
---|---|---|
入力値と出力値
|
データベース |
変更できません |
変更可能 #########声明######### |
SELECT ステートメントのみ | SELECT および DML ステートメント |
プロシージャからの呼び出し 関数から呼び出すことはできません |
|
コンパイルと実行 |
毎回コンパイルする必要がある コンパイルは 1 回のみ |
|
トランザクション管理 |
###結論は### この記事では、ストアド プロシージャとその利点、関数、関数の種類、関数の利点について詳しく説明し、最後に関数とストアド プロシージャの違いに到達しました。 |
以上がSQL Server で関数とストアド プロシージャを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。