设为首页 加入收藏

TOP

基本开题的感觉是了-MySQL继续继续(自定义函数&存储过程)(二)
2017-10-10 10:00:44 】 浏览:9824
Tags:基本 开题 感觉 -MySQL 继续 定义 函数 存储 过程
MITER ;

注意这里的id=id,前者是表中的id,后者是传递的参数,是可以这么写的(?)

还有要注意这里的习惯,DELIMITER开头结尾+BEGIN...END语句的写法

调用

mysql> CALL removeUserById(3);

Query OK, 4 rows affected (0.05 sec)

注意,有参数的过程,不能省略小括号

这里,数据中所有记录都被删除。所以一般过程的参数不要和数据表中字段名相同!

这里的修改只能是删除过程再重建个正确的。DROP PROCEDURE REMOVEUSERBYID;

----带有IN和OUT参数

过程定义为:删除某id的记录,返回剩余记录数量

和写正则表达式等的流程差不多,先考虑需求:两个操作,返回一个值,传递进一个值,所以两个参数,一个IN,一个OUT

mysql> DELIMITER //
mysql> CREATE PROCEDURE REMOVEIDRETURNLENGTH(IN p_id INT UNSIGNED,OUT usernums INT UNSIGNED)
-> BEGIN
-> DELETE FROM test WHERE id=p_id;
-> SELECT count(id) FROM test INTO usernums;
-> END
-> //
Query OK, 0 rows affected (0.02 sec)

mysql> DELIMITER ;

调用

mysql> CALL REMOVEIDRETURNLENGTH(3,@NUMS);
Query OK, 1 row affected (0.03 sec)

mysql> SELECT @NUMS;
+-------+
| @NUMS |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)

这里的@nums是变量

mysql> SET @QQ=2;
Query OK, 0 rows affected (0.00 sec)

这种变量称为用户变量,仅对当前用户有效,带有@符号

----带有多个OUT参数的过程

比如一个拥有很多字段的数据表

实现过程:删除某个id的字段,返回被删除的用户,以及返回剩余的用户

DELIMITER //

CREATE PROCEDURE removereturn2(IN p_age SMALLINT UNSIGNED,OUT remove_user SMALLINT UNSIGNED,OUT usercount SMALLINT UNSIGNED)

BEGIN

DELETE FROM test WHERE age=p_age;

SELECT ROW_COUNT() INTO REMOVE_USER;

SELECT COUNT(ID) FROM test INTO USERCOUNT;

END

//

DELIMITER ;

其中,ROW_COUNT是个自带函数

CALL REMOVERETURN2(20,@A,@B);

SELECT @A,@B;

需要注意的是,由于过程的创建后不能修改,第一次创建尽量不要错,要不就不要怕麻烦

----存储过程和自定义函数的区别

存储过程功能复杂一些,常用于对表的操作;函数一般不用做对表的操作

~~~~可以返回多个值;函数一般返回一个值

~~~~一般独立的来执行;函数可以作为其他SQL语句的组成部分来出现

~~~~常用,来封装复杂过程;函数很少用

2、PHP与MySQL

明天开始学习PHP中常用的MySQL函数(?)

 

bye

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇include,include_once,require.. 下一篇微信服务号开发-获取用户位置信息

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目