データベースシステムの原則(第5章:データベースプログラミング)

まず、ストアドプロシージャ

コンセプト:ストアドプロシージャは、SQL文の具体的な機能セットを完了するためにグループであり、その本質は、データベースに格納されたコードの一部です。これは、宣言型と手続き型SQL文SQL文で構成することができます。

特徴:

  • SQL言語は、機能性と柔軟性を高めることができます
  • グッドカプセル化
  • 高性能
  • あなたは、ネットワークトラフィックを削減することができます
  • データベースとデータセキュリティの整合性を確保するために、セキュリティ・メカニズムとして使用することができます

ユーザー定義のターミネータ(ELIMITER

  • ELimit $$:
  • 例:MySQLのターミネータは2感嘆符に変更し、「!!」(DELIMITER !!)

CREATE PROCEDURE文を使用してストアドプロシージャを作成します: CREATE PROCEDUREにSP_NAME([proc_parameter [、...]])routine_bodyを。

proc_paramete:パラメータリストは、ストアドプロシージャを指定します

routine_body:本体部分ストアドプロシージャは、また、手順の本体と称される

[IN | OUT | INOUT] PARAM_NAMEタイプ:パラメータ名、パラメータ型

例:特定の性別などの顧客の性別でテーブルを変更することができ、顧客ID番号の顧客に与えられたテーブルの顧客を実現するために使用されるmysql_testにストアドプロシージャを作成します

 

 

 

ローカル変数を宣言するためにDECLAREステートメントを使用します。タイプのDECLAREのVAR_NAME [、...] [DEFAULT値]

たとえば、ローカル変数整数CIDを宣言(10)のCID INTを宣言する。

ローカル変数を宣言するためにDECLAREステートメントを使用します

  • 1)のみストアドプロシージャ本体に文をBEGIN ... ENDステートメントブロック。
  • 2)ストアドプロシージャの最初に宣言する必要があります。
  • 3)その範囲は声明BEGIN ... ENDステートメントブロックに制限されています。
  • 4)ユーザ変数とは異なります

ローカル変数とユーザー変数の違い:

  • 1)ローカル変数ではありません@記号の前で宣言、そしてそれだけでそのBEGIN ... ENDステートメントブロック文を使用宣言することができます。
  • あなたが宣言した場合2)変数ユーザーが同時に宣言したユーザー変数は、セッション全体に存在し、その名前の前に@記号を使用します。

ローカル変数のSETステートメントの使用: SET VAR_NAMEの= exprを[、VAR_NAME =式] ... SET CID = 910;

SELECT ... INTOステートメントを直接ローカル変数に選択した列の値を使用して

 

 

フロー制御文

  • 1、条件文IF ... THEN ... ELSE文CASE文(条件THEN ELSE表現式1 2 END IF IF;)
  • 2、ループLOOP文WHILEステートメントREPEATステートメント

条件式WHILE END WHILE

繰り返し表現ENDリピート

ループ式ENDループ

ITERATEステートメントのその現在のサイクルのうち

****************************カーソルCURSOR ******************** *********************

DECLARE CURSORステートメントを使用してカーソルを作成します。

 

 

 

カーソルを開くためにOPEN文を使用します。OPEN cursor_nameは

INTO文... FETCHを使用してデータをお読みください。

 

 

 

CLOSE文を使ってカーソルを閉じます: CLOSE cursor_nameは

************************ **********************使用ストアドプロシージャ

ストアドプロシージャを呼び出すために、CALLステートメントを使用します

 

 

 顧客ID番号909に変更男性のお客様に「M」、データベースmysql_testでストアドプロシージャを呼び出すSp_update_sex

CALLのsp_update_sex(909、 'M')。

ストアドプロシージャの使用を削除するDROP PROCEDUREステートメント

DROP PROCEDUREの[IFがEXISTS] sp_name

第二に、メモリ機能

ストアドプロシージャと機能を格納された、SQLステートメントは、コード断片とのプロシージャ文であります

CREATE FUNCTIONステートメントを使用して保存された関数を作成します

FUNCTIONのsp_name([func_parameter [、...]])RETURNSがroutine_bodyタイプCREATE

  • sp_name:保存された関数の名前を指定します。
  • func_parameter:パラメータが記憶機能を指定します
  • 戻り値型:宣言関数は値格納されたデータのタイプを返し、型が戻り値のデータ型を指定します
  •  本体部分はまた、メモリ機能体と呼ばれ、指定されたストレージ機能をroutine_body

ストレージ機能でデータベースに作成Mysql_test、関数は、データベースが顧客ID番号が付与されていない場合、特定の顧客ID番号が顧客の性別を返し、その後、返却の必要条件に基づくことができる「クライアントではありません。」

使用mysql_testを。
デリミタは$$ 
CREATE  FUNCTIONの fn_search(CIDのINT RETURNS  CHAR20 
DETERMINISTICは、
BEGIN 
DECLARE SEXのCHARを20 )。
SELECT cust_sexをINTO SEX FROM 顧客
 のcust_id = CID;
IF SEXはIS NULL THEN RETURNSELECT '没有该客户');
ELSE IF SEX = 'F' THEN RETURN  
 
SELECT '女')。
 ELSE  RETURNSELECT '男');
 END  IF ;
 END  IF ;
END $$

 

 

 保存された関数を呼び出すSELECTキーワードを使用します。 SP_NAMEを選択します([func_parameter [、...]])

:使用DROP FUNCTION文は、保存された機能削除 [存在する場合] SP_NAMEをドロップ機能を

おすすめ

転載: www.cnblogs.com/jalja/p/11611440.html