MySQL存储过程资料收集
来源:互联网 发布:一件小事毁了人生知乎 编辑:程序博客网 时间:2024/05/21 06:55
表A
|
MySQL 5.0支持存储过程语句。
一.创建存储过程 1.基本语法: 二.调用存储过程create procedure sp_name() 2.参数传递begin ......... end 1.基本语法:call sp_name() 三.删除存储过程注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递 1.基本语法: 四.区块,条件,循环drop procedure sp_name// 2.注意事项 (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 1.区块定义,常用 begin ...... end; 也可以给区块起别名,如: lable:begin ........... end lable; 可以用leave lable;跳出区块,执行区块以后的代码 2.条件语句 if 条件 then statement else statement end if; 3.循环语句 (1).while循环 [label:] WHILE expression DO statements END WHILE [label] ; (2).loop循环 [label:] LOOP statements END LOOP [label]; (3).repeat until循环 五.其他常用命令[label:] REPEAT statements UNTIL expression END REPEAT [label] ; 1.show procedure status 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2.show create procedure sp_name |
存储过程创建语法:
CREATE PROCEDURE procedure_name ([parameter[,...]) [LANGUAGE SQL] [ [NOT] DETERMINISTIC ] [{CONTAINS SQL|MODIFIES SQL DATA|READS SQL DATA|NO SQL}] [SQL SECURITY {DEFINER|INVOKER} ] [COMMENT comment_string] procedure_statements |
可用SHOW PROCEDURE STATUS 或 SHOW CREATE PROCEDURE 来查看存储过程信息
另,系统表INFORMATION_SCHEMA.ROUTINES也包含了存储过程的一些信息
同样地,函数也可以使用同样方式查看(SHOW FUNCTION STATUS)
函数的创建
CREATE FUNCTION function_name (parameter[,...]) RETURNS datatype [LANGUAGE SQL] [ [NOT] DETERMINISTIC ] [ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ] [ SQL SECURITY {DEFINER|INVOKER} ] [ COMMENT comment_string ] 语句体 |
函数与存储过程基本一样,其区别主要有:
1、 要使用RETURNS指定返回类型
2、 函数必须返回值,且在语句体中使用RETURN返回(注意:指定返回类型用RETURNS,返回值用RETURN)
3、 参数不区分IN,OUT,全部为IN类形
例:
CREATE FUNCTION cust_status(in_status CHAR(1))
RETURNS VARCHAR(20)
BEGIN
DECLARE long_status VARCHAR(20);
IF in_status = 'O' THEN SET long_status='Overdue';
ELSEIF in_status = 'U' THEN SET long_status='Up to date';
ELSEIF in_status = 'N' THEN SET long_status='New';
END IF;
RETURN(long_status);
END;
调用:
SELECT cust_status('O');
触发器
CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name {BEFORE|AFTER} {UPDATE|INSERT|DELETE} ON table_name FOR EACH ROW trigger_statements |
意义:当对表table_name执行update,insert,delete操作之前(before)或之后(after)时触发语句trigger_statements操作
例:
mysql> CREATE TRIGGER account_balance_au
AFTER UPDATE ON account_balance FOR EACH ROW
BEGIN
DECLARE dummy INT;
IF NEW.balance<0 THEN
SET NEW.balance=NULL;
END IF;
END
上述触发器表示:当更新表account_balance之后,如果更新的值balance小于0,则将它改为NULL,
注:如果为OLD.balance则表示更新前的原值
- MySQL存储过程资料收集
- MySQL存储过程资料收集
- MySQL存储过程资料收集
- MySQL存储过程资料
- MySQL 存储过程常用SQL语句收集
- Mysql资料收集
- MySQL学习资料收集
- 存储过程收集
- 存储过程相关资料
- SQL Server 存储过程收集
- SQLServer存储过程收集总结
- 【汇总】存储过程、触发器 资料
- 【mysql】mysql存储过程
- pgsql(解决问题过程中的资料收集)
- 开发过程中的一些资料收集---
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- mysql存储过程学习及java调用存储过程
- 数据库的连接及三层结构中的业务层及数据处理层的编写
- 80X86寻址方式总结
- mysql 5.0存储过程学习总结
- FCKeditor_2.4.3的精简和使用
- MySQL存储过程资料收集
- 用VIM编写C/C++程序
- 成就DBA职业生涯
- mysql数据库的备份和转移[自我总结,是之前一篇文章的补充]
- NAND和NOR flash的区别
- POJ2593
- 什么是成功
- IBM联合顶尖大学研发认知计算 未来模拟大脑
- AJAX初识