mysql存储过程与函数-----第一章
来源:互联网 发布:快递免费数据管理软件 编辑:程序博客网 时间:2024/05/21 01:32
本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。
函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 。1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。
一。创建一个存储过程:(执行过一次后,下次直接调用,不需要重新执行)
DELIMITER $$ USE `插入表所在的数据库名字`$$ DROP PROCEDURE IF EXISTS `insertpro`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `insertpro`(IN IP_NUM INT, IN OID_NUM INT) BEGIN DECLARE iIP INT DEFAULT 0 ; DECLARE iOID INT DEFAULT 0 ; WHILE(iIP < IP_NUM) DO SET iOID = 0; WHILE(iOID<OID_NUM) DO SET @mySql = CONCAT("INSERT INTO testtb (IP, OID) VALUES(CONCAT((ROUND(RAND() * 255) + 1),'.',(ROUND(RAND() * 255) + 1),'.',(ROUND(RAND() * 255) + 1),'.',(ROUND(RAND() * 255) + 1)),ROUND(RAND()*100)+1);"); PREPARE stmt FROM @mySql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET iIP = iIP+1; END WHILE; SET iIP = iIP+1; END WHILE; END$$ DELIMITER ;
标准格式:
create procedure 存储过程名字()( [in|out|inout] 参数 datatype)begindeclare 参数 类型 default 多少//申明参数while (条件)doMySQL 语句;end while;end;
执行存储过程:(插入8w条数据)
call autoinsert 1000 80
二。创建一个函数:
格式:
drop function if exists 创建的函数;create function 函数名(参数1 类型) returns 返回值类型begin return( select 字段 from 表 where 字段=参数1; );end;
实例:
DROP FUNCTIONIF EXISTS add_function;CREATE FUNCTION add_function (tid INT) RETURNS VARCHAR (45)BEGINRETURN (SELECTlicenseNumberFROMtb_group_chexian_orderWHEREid = tid);END;
调用:
select add_function(12);
结果显示:
阅读全文
1 0
- mysql存储过程与函数-----第一章
- [MySQL] MySQL存储过程与存储函数
- MYSQL存储过程与函数
- MySql存储过程与函数
- MySql存储过程与函数
- mysql函数与存储过程
- mysql存储过程与函数------创建存储过程与函数
- mysql中的存储过程与存储函数
- Mysql之存储过程与存储函数
- mysql查看所有存储过程与函数
- mysql系列:存储过程与自定义函数
- mysql函数与存储过程的区别
- mysql的函数与存储过程
- MySQL存储过程 与 自定义函数
- MySql存储过程与函数详解
- mysql 函数与存储过程及区别
- MySQL自定义函数与存储过程
- mysql存储过程与自定义函数
- 按钮被点击后屏蔽点击且倒计时60S能再次被点击和JS实现和JQuery实现
- lucene-架构
- #import、#include、@import modules区别
- 欧拉函数
- HTML总结
- mysql存储过程与函数-----第一章
- 寻找多元素
- MySQL性能分析和优化
- openstack搭建--2--控制节点安装mysql和rabbitmq
- JS之传递参数
- 欢迎使用CSDN-markdown编辑器
- 基于DL的目标检测概述
- C#动态创建类和使用特性增强程序可扩展性
- uva 10237 n x n棋盘上放k个棋子 棋子不能在同一斜线上 求总类数