mysql 中函数和存储过程和函数的区别的区别和联系

创建存储过程:
CREATE&[definer = {user|current_user}]&PROCEDURE&sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body
proc_parameter : [IN|OUT|INOUT] parameter_name type
其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型
存储过程体中可以使用自定义函数(UDF)中使用的复合结构/流程控制/SQL语句/自定义变量等等内容,详情参阅&
调用存储过程:
CALL&sp_name ([ proc_parameter [,proc_parameter ...]])
CALL&sp_name&
说明:当无参时,可以省略"()",当有参数时,不可省略"()"
存储过程修改:
ALTER语句修改存储过程只能修改存储过程的注释等无关紧要的东西,不能修改存储过程体,所以要修改存储过程,方法就是删除重建!
删除存储过程:
DROP PROCEDURE [IF EXISTS] sp_name
创建无参存储过程:
delimiter //
CREATE PROCEDURE showTime()
SELECT now();
CALL showT
作用:显示当前时间,没什么实际意义
创建含参存储过程:
只有一个IN参数
delimiter //
CREATE PROCEDURE seleById(IN uid SMALLINT UNSIGNED)
SELECT * FROM son WHERE id =
call seleById(2);
包含IN参数和OUT参数
delimiter //
CREATE PROCEDURE deleteById(IN uid SMALLINT UNSIGNED, OUT num SMALLINT UNSIGNED)
DELETE FROM son WHERE id =
SELETE row_count() into
call seleById(2,@changeLine);
SELETE @changeLine;
说明:创建存储过程deleteById,包含一个IN参数和一个OUT参数.调用时,传入删除的ID和保存被修改的行数值的用户变量@changeLine,select @changeL输出被影响行数.
存储过程与自定义函数的区别:
存储过程实现的过程要复杂一些,而函数的针对性较强;
存储过程可以有多个返回值,而自定义函数只有一个返回值;
存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;
存储过程存在的必要性(好处):
存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.
提高了运行速度;
同时降低网络数据传输量(你觉得传一堆SQL代码快,还是传一个存储过程名字和几个参数快???)
阅读(...) 评论()MySQL存储过程和函数区别介绍_数据库技术_Linux公社-Linux系统门户网站
你好,游客
MySQL存储过程和函数区别介绍
来源:Linux社区&
作者:Linux
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
存储过程和函数存在以下几个区别:
1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。
2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。
4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。
本文永久更新链接地址:
相关资讯 & & &
& (11/11/:56)
& (09/25/:31)
& (02月26日)
& (10/19/:05)
& (09/25/:52)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款为了账号安全,请及时绑定邮箱和手机
存储过程与函数有什么区别?
RT,刚看到存储过程
感觉和函数区别不是太明显。。。
非常感谢!
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11Mysql学习笔记:存储过程和函数有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。几点疑问:问1:Mysql存储过程和函数的区别?答:在本质上它们都是存储程序。函数只能通过return语句返回单个值或者表对象;而存储过程不允许执行return语句,但是可以通过out参数返回多个值。函数的限制比较多,不能用临时表,只能用表变量,还有一些函数都不可用等等;存储过程的限制相对就比较少。函数可以嵌入SQL语句,在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。问2:存储过程中的代码可以改变吗?答:目前不能。如果写错了必须使用DROP语句删除后重新编写。问3:存储过程中可以调用其他存储过程吗?答:可以。存储过程包含用户定义的SQL语句集合,可以使用CALL语句调用存储过程,当然在存储过程中也可以使用CALL语句来调用其他存储过程,但是不能使用DROP语句删除其他存储过程。问4:存储过程的参数不要与数据表中的字段名相同?答:最好不要,否则将会出现无法预期的结果。问5:存储过程的参数可以使用中文吗?答:一般情况下,可能会出现存储过程中传入中文参数的情况,例如某个存储过程根据用户的名字查找该用户的信息,传入的参数值可能是中文。这时需要定义存储过程的时候,在后面加上character set gbk,不然调用存储过程使用中文参数会出错。比如定义userInfo存储过程,代码如下:CREATE PROCEDURE useInfo(IN u_name VARCHAR(50) character set gbk,OUT u_age INT);MYSQL存储过程和函数的区别及操作分析
存储过程介绍:存储过程就是一条或多条的SQL语句的集合,可以理解为批文件
存储程序:存储过程 和 函数
存储过程和函数的区别:
本质上都是存储程序,函数只能通过return语句返回单个值或表对象,而存储过程不允许执行return语句,而且可以通过out参数返回多个值,函数不能用临时表,只能用变量,函数可以在sql语句中执行,而存储过程是独立的
创建存储过程:CREATE PROCEDURE
调用存储过程:CALL语句,只能输出变量返回值,存储过程可以调用其他存储过程
例子:CREATE PROCEDURE my_proc()
SELECT * FROM
创建函数:CREATE FUNCTION,
调用函数:SELECT func();
定义变量:DECLARE num int DEFAULT 9;
给变量赋值:SET num=9;
定义条件:DECLARE aa CONDITION FOR SQLSTATE &42000&;
SQLSTATE代表的是的错误
声明光标:DECLARE cursor_name CURSOR FOR select_
打开光标:OPEN cursor_
使用光标:FETCH cursor_name INTO var_
var_name :表示将光标查询的数据放入var_name中;
关闭光标:CLOSE cursor_
ELSE &&..;
WHEN &.. THEN && ;
WHEN && THEN &&.. ;
ELSE &&&.;
LOOP语句(重复执行某些语句):
loop_name : LOOP
IF bl THEN LEAVE loop_
END LOOP loop_
LEAVE :表示退出被标注的流程构造;
ITERATE:将执行顺序转到语句开头处
ITERATE&.. UNTIL 条件 END ITERATE
REPEAT:每次都是带条件执行,直到为真,否则重复执行
REPEAT &.. UNTIL 条件 END REPEAT
WHILE:每次带条件执行,和REPEAT不通之处是第一次执行时会判断是否为TRUE;
WHILE & DO &. END WHILE;
查看存储过程;SHOW CREATE PROCEDURE proc_
查看函数:SHOW CREATE FUNCTION func_
删除存储过程:DROP PROCEDURE proc_
删除函数:DROP FUNCTION func_

我要回帖

更多关于 mysql存储过程与函数 的文章

 

随机推荐