mysql ストアド プロシージャとは何ですか?
ストアド プロシージャは、サーバーに保存される SQL ステートメントを組み合わせたものです。ストアド プロシージャはコンパイル、作成され、データベースに保存されます。ユーザーは、ストアド プロシージャの名前を使用してそれらを呼び出し、実行できます。ストアド プロシージャの中心的な考え方は、データベースの SQL 言語レベルでのカプセル化と再利用性です。ストアド プロシージャを使用すると、アプリケーション システムのビジネスの複雑さは軽減されますが、データベース サーバー システムの負荷が増加するため、ストアド プロシージャを使用する場合は、ビジネスに関する包括的な考慮事項を考慮する必要があります。
基本構文形式
CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body
(無料の学習ビデオ チュートリアルの共有: mysql ビデオ チュートリアル)
例 1: 消費量の計算割引
-- 创建存储过程 DROP PROCEDURE IF EXISTS p01_discount ; CREATE PROCEDURE p01_discount(IN consume NUMERIC(5,2),OUT payfee NUMERIC(5,2))BEGIN -- 判断收费方式 IF(consume>100.00 AND consume<=300.00) THEN SET payfee=consume*0.8; ELSEIF (consume>300.00) THEN SET payfee=consume*0.6; ELSE SET payfee = consume; END IF; SELECT payfee AS result;END ; -- 调用存储过程 CALL p01_discount(100.0,@discount);
例 2: データを書き込みながら
データ テーブルを提供します
CREATE TABLE `t03_proced` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `temp_name` varchar(20) DEFAULT NULL COMMENT '名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='触发器写数据';
プログラムを保存します
受信メッセージに従ってt03_proced テーブルに書き込まれるデータの数を決定するパラメータ。
DROP PROCEDURE IF EXISTS p02_batch_add ; CREATE PROCEDURE p02_batch_add(IN count INT(11))BEGIN DECLARE temp int default 0; WHILE temp < count DO INSERT INTO t03_proced(temp_name) VALUES ('pro_name'); SET temp = temp+1 ; END WHILE; END ; -- 测试:写入10条数据call p02_batch_add(10);
注意事項
1. ビジネス シナリオ
実際の開発におけるストアド プロシージャのアプリケーションはあまり普及していません。通常、複雑なビジネス シナリオは次のとおりです。レベル開発により、管理、メンテナンス、最適化が向上します。
2. 実行速度
アプリケーションの書き込みまたはデータベース接続クライアントの書き込みに基づく単一テーブルのデータ書き込みの単純なシナリオの場合、ストアド プロシージャの書き込みと比較すると、速度は大幅に遅くなります。ストアド プロシージャには、ネットワーク通信のオーバーヘッド、解析オーバーヘッド、オプティマイザー オーバーヘッドなどがほとんどありません。
おすすめの関連記事とチュートリアル: mysql チュートリアル
以上がmysqlストアドプロシージャの例を示した詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。