-
プロシージャの作成
MySQL データベースにテーブルを格納するストアド プロシージャを作成します。
関数の作成
ユーザー定義関数、特にデータを返すストアド プロシージャを作成します。
手順の変更
CREATE PROCEDURE で作成された、事前に指定されたストアド プロシージャを変更しても、関連するストアド プロシージャやストアド機能には影響しません。 。
関数の変更
CREATE FUNCTION で作成された、事前に指定されたストアド プロシージャを変更しても、関連するストアド プロシージャやストアド ファンクションには影響しません。 。
ドロップ手順
MySQL テーブルから 1 つ以上のストアド プロシージャを削除します。
ドロップ機能
MySQL テーブルから 1 つ以上のストアド関数を削除します。
作成プロシージャの表示
CREATE PROCEDURE を使用して作成された、事前に指定されたストアド プロシージャのテキストを返します。この宣言は、SQL:2003 仕様の MySQL 拡張機能です。
作成関数の表示
CREATE FUNCTION を使用して作成された、事前に指定されたストアド プロシージャのテキストを返します。この宣言は、SQL:2003 仕様の MySQL 拡張機能です。
手順のステータスを表示
名前、タイプ、作成者、作成日、変更日など、事前に指定されたストアド プロシージャの特性を返します。この宣言は、SQL:2003 仕様の MySQL 拡張機能です。
機能ステータスを表示
名前、タイプ、作成者、作成日、変更日など、事前に指定されたストアド関数の特性を返します。この宣言は、SQL:2003 仕様の MySQL 拡張機能です。
電話
CREATE PROCEDURE を使用して作成された、事前に指定されたストアド プロシージャを呼び出します。
始まり ... 終わり
実行された複数のステートメントのセットが含まれます。
宣言する
ローカル変数、環境、プロセッサ、およびポインターを指定するために使用されます。
セット
ローカルおよびグローバルサーバー変数の値を変更するために使用されます。
選択してください...
表示変数を格納するために使用される列。
開ける
ポインタを開くために使用されます。
フェッチ
特定のポインターを使用して次の列を取得します。
近い
ポインタを閉じたり開いたりするために使用されます。
もし
if-then-else-end if ステートメント。
場合...いつ
case ステートメントの構造
ループ
単純なループ構造であり、LEAVE ステートメントを使用して終了できます。
離れる
IF、CASE、LOOP、REPEAT、WHILE ステートメントを終了するために使用されます。
反復する
サイクルを再開するために使用されます。
繰り返す
ループは最後にテストされます。
その間
最初にテストされるループ。
返品
ストアド プロシージャの値を返します。
MySQL 5.0 はストアド プロシージャ ステートメントをサポートしています。
1. ストアド プロシージャを作成する
1.基本的な文法:
プロシージャ sp_name() を作成します
始める
……
終わり
2.パラメータの受け渡し
2. ストアド プロシージャを呼び出す
1.基本構文: sp_name() を呼び出します。
注: ストアド プロシージャにパラメータが渡されていない場合でも、ストアド プロシージャ名の後にかっこを追加する必要があります。
3. ストアド プロシージャを削除する
1.基本的な文法:
プロシージャ sp_name// を削除します
2. 注意事項
(1) 1 つのストアド プロシージャ内で別のストアド プロシージャを削除することはできません。別のストアド プロシージャを呼び出すことのみが可能です。
4. ブロック、条件、ループ
1. 一般的に使用されるブロック定義
始める
...
終わり;
ブロックに次のようなエイリアスを付けることもできます。
ラベル:開始
……
エンドラベル。
Leave label を使用すると、ブロックから抜け出し、ブロックの後のコードを実行できます。
2.条件文
条件があれば
声明
それ以外
声明
次の場合は終了します。
3. ループ文
(1).while ループ
[ラベル:] WHILE式DO
ステートメント
END WHILE [ラベル];
(2).ループループ
[レーベル:]LOOP
ステートメント
END LOOP [ラベル];
(3).ループまで繰り返す
[レーベル:]リピート
ステートメント
UNTIL式
END REPEAT [ラベル];
5. その他のよく使用されるコマンド
1.手続き状況を表示
データベース内のすべてのストアド プロシージャの基本情報 (所属するデータベース、ストアド プロシージャの名前、作成時刻など) が表示されます。
2.show 作成プロシージャ sp_name
ストアド プロシージャの作成構文:
CREATE PROCEDURE プロシージャ名 ([パラメータ[,...])
[言語SQL]
[ [NOT] 決定的 ]
[{SQL を含む | SQL データを変更する | SQL データを読み取る | SQL なし}]
[SQL セキュリティ {DEFINER|INVOKER}]
[COMMENT コメント文字列]
プロシージャステートメント
SHOW PROCEDURE STATUS または SHOW CREATE PROCEDURE を使用すると、ストアド プロシージャ情報を表示できます。さらに、システム テーブル INFORMATION_SCHEMA.ROUTINES にも、同様にストアド プロシージャに関する情報が含まれています (SHOW FUNCTION STATUS)。
機能の作成
CREATE FUNCTION 関数名 (パラメータ[,...])
RETURNS データ型
[言語SQL]
[ [NOT] 決定的 ]
[ {SQL を含む | SQL データを読み取る | ]
[SQL セキュリティ {DEFINER|INVOKER}]
[COMMENT コメント文字列]
ステートメント本文
関数は基本的にストアド プロシージャと同じです。主な違いは次のとおりです。
1. RETURNS を使用して戻り値の型を指定する
2. 関数は値を返し、ステートメント本体で RETURN を使用する必要があります (注: RETURNS を使用して戻り値の型を指定し、RETURN を戻り値に指定します)。
3. パラメータは IN と OUT を区別せず、すべて IN 型です。
例:
CREATE FUNCTION cust_status(in_status CHAR(1))
VARCHAR(20) を返します
BEGIN DECLARE long_status VARCHAR(20);
in_status="O" の場合は、long_status="期限切れ" を設定します。
ELSEIF in_status="U" THEN SET long_status="最新";
ELSEIF in_status="N" THEN SET long_status="new";
終了 IF;
RETURN(long_status);
終わり;
電話:
SELECT cust_status('O');
トリガー
CREATE [DEFINER={user|CURRENT_USER}] TRIGGER トリガー名
{前|後} {更新|挿入|削除}
ON テーブル名
行ごとに
トリガーステートメント
意味: ステートメント trigger_statements 操作は、テーブル table_name で更新、挿入、および削除操作が実行される前 (前) または後 (後) にトリガーされます。
例:
mysql> トリガーを作成 account_balance_au
各行の account_balance の更新後
始める
ダミーINTを宣言します。
IF NEW.balance<0 THEN
SET NEW.balance=NULL;
終了 IF;
終わり
上記のトリガーは、テーブル account_balance を更新した後、更新された値の残高が 0 未満の場合、それを NULL に変更することを意味します。
注: OLD.balance の場合は、更新前の元の値を意味します