mysql 存储过程 函数 触发器
mysql存储过程与函数
存储过程下载 demo
mysql> delimiter // -- 这里//为修改默认分隔符; mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END//
Query OK, 0 rows affected (0.00 sec) mysql> delimiter ; // -- 改回来这里的默认分隔符为;
这里调用试用call
mysql> CALL simpleproc(@a);
mysql> select @a;
函数demo
参数没有输入输出参数
mysql> CREATE FUNCTION hello (s CHAR(20))
mysql> RETURNS CHAR(50) DETERMINISTIC
-> RETURN CONCAT(‘Hello, ‘,s,‘!‘);
这里调用试用 select,和普通函数一样了
mysql> SELECT hello(‘world‘);
+----------------+
| hello(‘world‘) |
+----------------+
| Hello, world! |
+----------------+
变量的使用
declare last_month_start DATE;
DECLARE my_sql INT DEFAULT 10 ;
set var_name = 2;
流程控制
CREATE DEFINER=`root`@`localhost` PROCEDURE `student_insert`()
BEGIN
set @x=0;
ins :LOOP
set @x = @x +1;
if @x=100 then
leave ins;
end if;
insert into student (stuname) values (CONCAT("name",@x));
END LOOP ins;
END CREATE DEFINER=`root`@`localhost` PROCEDURE `student_insert2`()
BEGIN
set @x=100;
ins :LOOP
set @x = @x +1;
if @x=120 then
leave ins;
elseif mod(@x,2) = 0 then
iterate ins;
end if;
insert into student (stuname) values (CONCAT("name",@x));
END LOOP ins;
END CREATE DEFINER=`root`@`localhost` PROCEDURE `loop_demo`()
BEGIN
set @x=1 ,@x1=1;
repeat
set @x = @x +1;
until @x > 0 end repeat; while @x1 < 2 do
set @x1=@x1+1;
end while;
END
游标的使用
CREATE DEFINER=`root`@`localhost` PROCEDURE `cursor_demo`()
BEGIN
declare i_stuid int;
declare i_stuname varchar(20);
declare cur_stu cursor for select stuid,stuname from student;
declare exit handler for not found close cur_stu; set @x1 = 0;
set @x2 = 0; open cur_stu; repeat
fetch cur_stu into i_stuid,i_stuname;
select i_stuid,i_stuname;
until 0 end repeat; close cur_stu;
END CREATE DEFINER=`root`@`localhost` PROCEDURE `cursor_demo3`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT stuname,stuid FROM `student`;
DECLARE cur2 CURSOR FOR SELECT subid FROM `subject`;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET done = 1; OPEN cur1;
OPEN cur2; REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
SELECT a,b,c;
END IF;
UNTIL done END REPEAT; CLOSE cur1;
CLOSE cur2;
END
触发器
必须建立在真实表之上,适合一些初始化数据
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
); DELIMITER | CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
| DELIMITER ; INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
查看索引
show index from table
mysql 存储过程 函数 触发器的更多相关文章
- mysql存储过程和触发器的应用
***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空 ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- MySQL 存储过程 函数 routine 权限
MySQL 存储过程 函数 routine 权限 Table of Contents 1. mysql存储过程/函数权限 1.1. 相关对象操作权限检查 1.2. 执行权限 1 mysql存储过程/函 ...
- MySQL存储过程、触发器、自定义函数、事务
1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...
- mysql存储过程和触发器
mysql编程(存储过程和触发器) 存储过程 什么是存储过程 存储过程,带有逻辑的sql语句 存储过程特点 执行效率非常快!存储过程是在数据库的服务器端执行的!!! 移植性很差!不同数据库的存储过程是 ...
- MySql 存储过程、触发器和权限问题
存储过程 1.1 什么是存储过程 存储过程,带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if while) 1.2 存储过程特点 1)执行效率非常快!存储过程 ...
- MySQL存储过程、触发器 小例子
一.存储过程 语法: CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN ... END 参数: IN 输入参数 表示该参数的值必须在调用存 ...
- MySQL存储过程及触发器
一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...
- oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
--创建索引 关键词 index create[unique] index index_name on table_name(column_name [,column_name…]) [tablesp ...
随机推荐
- 2.2 Scala基础知识
一.基本数据类型和变量 1.基本数据类型 java中每一个数据类型都是一个类: scala没有自己定义String类型,String类型是从java.lang.String照搬的. 字面量(liter ...
- mac 修改 vim 配色
1. 看看系统有哪些自带配色方案 ls /usr/share/vim/vim73/colors README.txt darkblue.vim delek.vim elflord.vim koehle ...
- 201871010133-赵永军《面向对象程序设计(java)》第十二周学习总结
201871010133-赵永军<面向对象程序设计(java)>第十二周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 201871010134-周英杰《面向对象程序设计(java)》第十四周学习总结
项目 内容 这个作业属于哪个课程 <https://home.cnblogs.com/u/nwnu-daizh/> 这个作业的要求在哪里 <https://www.cnblogs.c ...
- Maven 拥有三套相互独立的生命周期:clean、default、site
table th:nth-of-type(1) { width: 70px; } table th:nth-of-type(2) { width: 100px; } 生命周期 目的 包含的阶段 cle ...
- 03-numpy-笔记-expand_dims
>>> x = np.array([[1,2,3],[4,5,6]]) >>> x.shape (2, 3) >>> np.expand_dims ...
- 编译安装PHP以及需要的基本扩展库(php7.4)
安装配置选项1: ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-curl --with-freety ...
- zz斯坦福Jure Leskovec图表示学习:无监督和有监督方法
斯坦福Jure Leskovec图表示学习:无监督和有监督方法(附PPT下载) 2017 年 12 月 18 日 专知 专知内容组(编) 不要讲得太清楚 [导读]现实生活中的很多关系都是通过图的形式 ...
- [RN] React Native 错误 Module does not exist in the module map
React Native 错误 Module does not exist in the module map 代码如下: import Login from 'login' import Index ...
- mysql 聚集索引,非聚集索引,覆盖索引区别。
把原站信息经过筛选贴过来,用于自己备忘.原站:https://www.cnblogs.com/aspwebchh/p/6652855.html ---------------------------- ...