SQLストアド・プロシージャプログラミング

手続記憶

  • ストアドプロシージャは、SQLデータベースコンパイル語順セットを格納した後、特定の機能のセットを達成するために

    • 柔軟性:動作の流れ制御サイクル中に記憶することができ、複雑な計算と決意を完了するために

    • 一貫性:データベースの整合性を維持するようにあなたは、プロセスに関連するいくつかの操作を格納することによって発生することができます

    • 効率:ストアドプロシージャは、効果的に、データベースへの開発者やプログラマの負担を軽減します
  • 文法

CREATE PROCEDURE SP_NAME(IN PRAM TYPE, OUT PRAM TYPE); IN 表示传入参数 默认不写时表示传入 TYPE 表示类型 OUT 表示传出参数 TYPE表示类型 INOUT 可以使一个传入参数在存储过程中被修改 并传出 存储过程内部语句以”;”结尾,因此在定义存储过程中需要切换控制台的命令结束符号 以避免歧义,可以使用DELIMITER // 
  • コール
调用存储过程使用 CALL SP_NAME()
删除存储过程 DROP PROCEDURE SP_NAME
查看已定义存储过程     SHOW PROCEDURE STATUS/SHOW CREATE PROCEDURE SP_NAME(详细信息) 
  • データベースを作成します。
create database if not exists demo1 default character set 'utf8'; 
  • データテーブルを作成します。
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 
  • 定義の終了記号
-- 定义 结束符
DELIMETER $$
  • 無引数ありません
CREATE PROCEDURE loop_insert_post()
BEGIN
DECLARE i INT;
SET i = 1;
WHILE i<1000 DO
INSERT INTO user(`name`,`addtime`)values(concat('JM',i),now());
SET i = i+1;
END WHILE;
END $$
  • 関数の呼び出し
-- 调用函数
CALL loop_insert_post //
  • MySQLはデフォルトのターミネータを復元します
DELIMETER ;

おすすめ

転載: www.cnblogs.com/xinjie123/p/10963046.html