ホームページ > データベース > mysql チュートリアル > mysqlストアドプロシージャの例を示した詳細な説明

mysqlストアドプロシージャの例を示した詳細な説明

王林
リリース: 2020-01-22 19:41:25
転載
2856 人が閲覧しました

mysqlストアドプロシージャの例を示した詳細な説明

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 &#39;主键ID&#39;,  
`temp_name` varchar(20) DEFAULT NULL COMMENT &#39;名称&#39;,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=&#39;触发器写数据&#39;;
ログイン後にコピー

プログラムを保存します

受信メッセージに従って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 (&#39;pro_name&#39;);        
        SET temp = temp+1 ;   
         END WHILE;
         END ;
         -- 测试:写入10条数据call p02_batch_add(10);
ログイン後にコピー

注意事項

1. ビジネス シナリオ

実際の開発におけるストアド プロシージャのアプリケーションはあまり普及していません。通常、複雑なビジネス シナリオは次のとおりです。レベル開発により、管理、メンテナンス、最適化が向上します。

2. 実行速度

アプリケーションの書き込みまたはデータベース接続クライアントの書き込みに基づく単一テーブルのデータ書き込みの単純なシナリオの場合、ストアド プロシージャの書き込みと比較すると、速度は大幅に遅くなります。ストアド プロシージャには、ネットワーク通信のオーバーヘッド、解析オーバーヘッド、オプティマイザー オーバーヘッドなどがほとんどありません。

おすすめの関連記事とチュートリアル: mysql チュートリアル

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

ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート