ホームページ >データベース >SQL >データベース ストアド プロシージャの簡単な説明

データベース ストアド プロシージャの簡単な説明

步履不停
步履不停オリジナル
2019-06-14 11:25:3940389ブラウズ

データベース ストアド プロシージャの簡単な説明

ストアド プロシージャとは

他のプログラミング言語を使用したことがある場合は、より簡単に理解できるでしょう。ストアド プロシージャは次のとおりです。メソッドと同じように。

これはメソッドであることが判明したため、同様のメソッド名、メソッドによって渡され結果を返す変数があり、ストアド プロシージャにはストアド プロシージャ名、ストアド プロシージャ パラメータ、および戻り値が含まれます。 。

ストアド プロシージャの利点:

  • ストアド プロシージャの機能により、SQL 言語の機能と柔軟性が大幅に強化されます。
  • データのセキュリティと整合性を確保できます。
  • ストアド プロシージャを介して、権限のないユーザーが制御下のデータベースに間接的にアクセスできるため、データのセキュリティが確保されます。
  • ストアド プロシージャを通じて、関連するアクションを同時に実行できるため、データベースの整合性が維持されます。
  • ストアド プロシージャを実行する前に、データベースは文法と構文を分析し、最適化された実行プランを提供します。このコンパイルされたプロセスにより、SQL ステートメントのパフォーマンスが大幅に向上します。
  • ネットワーク トラフィックを削減できます。
  • 企業ルールを具体化したコンピューティングプログラムをデータベースサーバーに組み込んで一元管理します。

ストアド プロシージャは、システム ストアド プロシージャ、拡張ストアド プロシージャ、およびユーザー定義ストアド プロシージャに分類できます。

システム ストアド プロシージャ

まず、システム ストアド プロシージャを見てみましょう。システム ストアド プロシージャはシステムによって定義され、主に MASTER データベースに保存されます。名前は「SP」または「XP」で始まります。これらのシステム ストアド プロシージャは MASTER データベース内にありますが、他のデータベース内のシステム ストアド プロシージャを呼び出すこともできます。新しいデータベースの作成時に現在のデータベースに自動的に作成されるシステム ストアド プロシージャがいくつかあります。

一般的に使用されるシステム ストアド プロシージャは次のとおりです:

exec sp_databases; --View database
  • exec sp_tables; --View table
  • exec sp_columns Student ;--列の表示
  • exec sp_helpIndex Student;--インデックスの表示
  • exec sp_helpConstraint Student;--Constraints
  • exec sp_helptext 'sp_stored_procedures';--ストアド プロシージャの表示作成 定義されたステートメント
  • exec sp_stored_procedures;
  • exec sp_rename Student, stuInfo;--テーブル名を変更します
  • exec sp_renamedb myTempDB, myDB;--データベース名を変更します
  • exec sp_defaultdb 'master', 'myDB';--ログイン名のデフォルト データベースを変更します
  • exec sp_helpdb;--データベース ヘルプ、データベース情報をクエリします
  • exec sp_helpdb master;
  • exec sp_attach_db -- データベースの接続
  • exec sp_detach_db -- データベースの接続解除
  • ストアド プロシージャの構文:

ストアド プロシージャを作成する前に、まずそれについて話しましょうストアド プロシージャの命名について話しましょう。ストアド プロシージャに関するいくつかの記事では、ストアド プロシージャを作成するときにプレフィックスを追加することが推奨されているのを見ました。ストアド プロシージャの名前の前にプレフィックスを追加する習慣を身に付けることが重要ですこれはほんの小さなことですが、小さなことが大きな成功か失敗を決定することがよくあります。 proc_name など、このようなプレフィックスを追加することを好む人もいると思います。このプレフィックス usp_name も参照してください。前者のprocはprocedureの略で、後者supはユーザープロシージャを意味します。私は最初の方法を好むため、以下のストアド プロシージャ名はすべて最初の方法で記述されます。名前の書き方はラクダ命名法が使われます。

ストアド プロシージャを作成するための構文は次のとおりです:

CREATE PROC[EDURE] 存储过程名 

@参数1 [数据类型]=[默认值] [OUTPUT] 

@参数2 [数据类型]=[默认值] [OUTPUT]

AS 

SQL语句

EXEC 过程名[参数]

ストアド プロシージャ インスタンスを使用します:

1.パラメータなし

create procedure proc_select_officeinfo--(存储过程名)as select Id,Name from Office_Info--(sql语句)

exec proc_select_officeinfo--(调用存储过程)

2. 入力パラメータあり
#
create procedure procedure_proc_GetoffinfoById ----  Name  dbo.Office_Info  Id=@Id----(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔)

注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称

##3. 入力および出力パラメータあり

#createプロシージャ proc_office_info--( ストアド プロシージャ名)

@Id int,@Name varchar(20) 出力--(パラメータ名パラメータ タイプ) 出力パラメータは、output

as
begin

select で追加する必要があります。 @Name=Name from dbo.Office_Info where Id=@Id --(SQL ステートメント)
end

declare @houseName varchar(20) --変数を宣言し、ストアド プロシージャによって渡された値を取得します
exec proc_office_info- -(ストアドプロシージャ名)
4,@houseName Output--(パラメータで出力を追加する必要があるとのこと。ここで@variable = OUTPUTを使用するとエラーが報告されるので、書き込み方法を変更)

select @houseName-- (表示値)

4.戻り値付き

create procedure proc_office_info--(存储过程名)
@Id int--(参数名 参数类型)as beginif(select Name from dbo.Office_Info where Id=@Id)=null --(sql语句)
beginreturn -1endelsebeginreturn 1end
end

declare @house varchar(20) --声明一个变量,获取存储过程传出来的值
exec @house=proc_office_info 2 --(调用存储过程,用变量接收返回值)--注:带返回值的存储过程只能为int类型的返回值
print @house
SQL に関連する技術的な記事については、
SQL チュートリアル

列を参照して学習してください。

以上がデータベース ストアド プロシージャの簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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