mysql 函数,存储过程举例

关于mysql的函数与存储过程的举例:

/*创建teacher*/
CREATE table teacher(
id INT(4) NOT NULL PRIMARY KEY auto_increment,
num INT(10) not NULL UNIQUE,
tname VARCHAR(20) NOT NULL,
sex VARCHAR(4) not NULL,
birthday DATE,
address VARCHAR(50)
);

/*向表teacher中插入数据*/
insert into teacher(num,tname,sex,birthday,address) VALUES
(1001,‘张三‘,‘男‘,‘1984-11-08‘,‘北京市昌平区‘),
(1002,‘李四‘,‘女‘,‘1970-01-21‘,‘北京市海淀区‘),
(1003,‘王五‘,‘男‘,‘1976-10-30‘,‘北京市昌平区‘),
(1004,‘赵六‘,‘男‘,‘1980-06-05‘,‘北京市顺义区‘);

/*1、创建存储过程tea_pro,其包含3个参数,输入参数teacher_id和type,
输出参数为info,存储过程的作用是根据编号(teacher_id)来查询teacher表中的记录,
如果type的值为1时,将姓名(name)传给输出参数info;当type的值为2时,
将年龄传给输出参数info;如果type为其他值,则返回字符串‘Error’。*/
DELIMITER //
CREATE PROCEDURE tea_pro(in teacher_id INT, in type int , out info CHAR(10))
reads SQL DATA
BEGIN
IF type=1
THEN
(SELECT tname into info FROM teacher where id=teacher_id);
ELSEIF type=2
THEN
SELECT year(now())-year(birthday) INTO info FROM teacher WHERE ID=teacher_id;
ELSE
set info=‘error‘;
END if;
END
//

CALL tea_pro(1,1,@name);
SELECT @name as ‘姓名‘;

CALL tea_pro(1,2,@age);
SELECT @age as ‘年龄‘;

CALL tea_pro(1,4,@age);
SELECT @age as ‘Error‘;
/*2、创建存储函数teacher_info2,有2个参数teacher_id和type。存储函数的作用
根据编号(teacher_id)来查询teacher的记录,如果type值为1时,返回姓名,如果
type为2时,返回年龄,如果type为其他值,返回字符串‘Error‘*/

DELIMITER //
CREATE FUNCTION teache_info2(teacher_id INT,type INT)
RETURNS char(10)
BEGIN
DECLARE result CHAR(10);
IF type=1
THEN
set result=(SELECT tname FROM teacher where id=teacher_id);
return result;
ELSEIF type=2
THEN
SELECT year(now())-year(birthday) INTO result FROM teacher WHERE ID=teacher_id;
return result;
ELSE
set result=‘error‘;
return result;
END if;
END
//

SELECT teache_info2(1,1) as ‘姓名‘;

SELECT teache_info2(1,2) as ‘年龄‘;

SELECT teache_info2(1,5) as ‘Error‘;

函数与存储过程基本相似,但依然存在区别,编写时请注意:

1、标识符不同。函数的标识符为FUNCTION,过程为:PROCEDURE。2、函数中有返回值,且必须返回,而过程没有返回值(其实不能这么说,存储过程存在输出值)。3、两者调用方式不同。4、函数可以在select语句中直接使用,而过程不能,例如:假设已有函数fun_getAVG() 返回number类型绝对值。那么select fun_getAVG(col_a) from table 这样是可以的。

注意:sql语句中"@"是:局部变量声明,如果没有"@"的字段代表是列名;
时间: 2024-11-06 11:25:47

mysql 函数,存储过程举例的相关文章

30.4. MySQL函数,存储过程,触发器,视图

函数 函数:系统函数和自定义函数系统函数:https://dev.mysql.com/doc/refman/8.0/en/func-op-summary-ref.html函数也可以进入数据库之后利用help命令来查看帮助,比如help max自定义函数 (user-defined function UDF) 注自定义函数定义之后保存在mysql.proc(mysql.func)表中 创建UDFCREATE [AGGREGATE] FUNCTION function_name(parameter_

mysql导出存储过程或函数

查询数据库中的存储过程和函数方法一:select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'   //存储过程select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION'   //函数方法二:show procedure status; //存储过程show function status;   

mysql 函数和存储过程的学习

#创建存储子程序需要CREATE ROUTINE权限. #· 提醒或移除存储子程序需要ALTER ROUTINE权限.这个权限自动授予子程序的创建者. #· 执行子程序需要EXECUTE权限.然而,这个权限自动授予子程序的创建者.同样,子程序默认的SQL SECURITY 特征是DEFINER,它允许用该子程序访问数据库的用户与执行子程序联系到一起 #-------------------------------------------------------------------------

mysql函数

一.字符串函数 (1).计算字符串个数 语法:char_length(string) 例子:select char_length(user_name) from gonda; (2).计算字节长度 语法:length(string) 例子:select length(name) from student; (3).合并字符串函数 语法:concat(s1,s2) 默认不定义分割符号 举例:select concat(user_id,user_name) from gonda; 语法:concat

mysql写存储过程/PHP写和调用存储过程

PHP调用MYSQL存储过程实例 来源: http://blog.csdn.net/ewing333/article/details/5906887 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT IN

MySQL 中存储过程的使用

关于 MySQL 的存储过程,我所了解的一些有规模的公司,对于使用存储过程实现业务逻辑都有严格的限制.我这里搜罗了一些资料,结合自身的经验,总结一些自己关于 MySQL 中存储过程使用的认识.由于水平有限,如有纰漏错误,还请多拍砖. 存储过程的优点主要包括以下几点: 1. 性能提高.相对于不使用存储过程来说的,因为存储过程在创建的时候,数据库已经对其进行了一次解析和优化,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都需要编译的情况来说,性能有所提高,存储过程经过编译之后会比单独

mysql 函数库

函数库 mysql存储过程基本函数包括:字符串类型,数值类型,日期类型 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,… ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string )

MySQL数据库存储过程动态表建立(PREPARE)

PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/ DEALLOCATE PREPARE statement_name /*删除定义*/ 这是我项目当中用到的,用作参考使用: DELIMITER $$ DROP PROCEDURE IF EXISTS `gpsdata`.`sp_test`$$ CREATE DEFINER=`r

[转]MYSQL 创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 一.MySQL 创建存储过程 "pr_add" 是个简单的

MySQL函数库

MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器.打开数据库.执行SQL语句等.所以这个函数库的功能对于我们来说是非常重要的! 其实,MySQL数据库是整个程序开发的最底层,我们在程序开发时,就必须为其添加一层漂亮的外衣,这层漂亮的外衣就是图形化用户界面(Graphical User Interface,简称GUI,又称图形用户接口),也就是使用者只需要具体基本的计算机知识,然后通过鼠标,就可以实现某些复杂的功能!其实,我