[解決済み】ストアドプロシージャとは何ですか?
質問
とは何ですか? ストアドプロシージャ" また、どのように機能するのでしょうか?
ストアドプロシージャーの構成はどうなっているのでしょうか(モノはそれぞれ が必要です。 はストアドプロシージャでなければならないのでしょうか?)
どのように解決するのですか?
ストアドプロシージャは、いくつかの方法で実行することができるSQL文のバッチです。ほとんどの主要なDBMはストアドプロシージャをサポートしていますが、すべてのDBMがサポートしているわけではありません。しかし、すべてのDBMがサポートしているわけではありません。詳細はDBMSのヘルプドキュメントで確認する必要があります。私はSQL Serverに最も精通しているので、SQL Serverをサンプルとして使用することにします。
ストアドプロシージャを作成するための構文は非常にシンプルです。
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
だから例えば
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
ストアドプロシージャの利点は、データアクセスロジックを一箇所に集中させることができ、DBAが最適化しやすくなることです。また、ストアドプロシージャには、実行権限を与えることができますが、そのユーザは下位のテーブルに対する読み取り/書き込み権限を持っている必要はないというセキュリティ上の利点もあります。これは、SQLインジェクション対策の第一歩として有効です。
ストアドプロシージャにはデメリットもあります。 CRUD の操作になります。例えば、各テーブルに Insert, Update, Delete と主キーに基づく select が最低1つあるとすると、各テーブルには4つのプロシージャがあることになります。400のテーブルを持つ大規模なデータベースでは、1600のプロシージャを持つことになります。これは重複がないと仮定しての話ですが、おそらく重複があるはずです。
ここで ORM などで、基本的なCRUD操作を自動生成することは、非常に大きなメリットがあります。
関連
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み] ORA-00918: 列があいまいに定義されています」を解決する方法
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] データベース内の全テーブルのサイズを取得する
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】PL/SQL SELECTに複数のCOUNT(DISTINCT xxx)を指定すると、予期しない結果になる。
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] エラー (ORA-00923: 期待された場所に FROM キーワードが見つかりませんでした)
-
[解決済み] SQLエラーです。ORA-00922: オプションがないか無効です。
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。