Mysql-存储过程和存储函数笔记
2014-04-10 18:28
555 查看
主要还是留着以后翻来复习。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.存储过程
delimiter && 标记结束的符号
最后一句 delimiter ; 分号前必须要加空格,否则报错。
@貌似是个隐含参数,不是很清楚,反正不写就报错。
2.存储函数
这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用相同名字 声明变量的块。
例:declare a,b varchar(20);
在存储程序中的SET语句是一般SET语句的扩展版本。被参考变量可能是子程序内声明的变量,或者是全局服务器变量。
在存储程序中的SET语句作为预先存在的SET语法的一部分来实现。这允许SET a=x, b=y, ...这样的扩展语法。其中不同的变量类型(局域 声明变量及全局和集体变量)可以被混合起来。这也允许把局部变量和一些只对系统变量有意义的选项合并起来。在那种情况下,此选项被识别,但是被忽略了。
例:set a="123",b="123456";
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.存储过程
创建:
DELIMITER &&
CREATE PROCEDURE count_user(IN i INT,OUT countt INT)
BEGIN
SELECT COUNT(*) FROM USER WHERE id=i;
END
&&
DELIMITER ;
delimiter && 标记结束的符号
最后一句 delimiter ; 分号前必须要加空格,否则报错。
调用:
CALL count_user(1,@);
@貌似是个隐含参数,不是很清楚,反正不写就报错。
游标:
DELIMITER && CREATE PROCEDURE query_user() BEGIN DECLARE curr CURSOR FOR (SELECT id FROM USER); OPEN curr; DECLARE a CHAR(5); DECLARE b CHAR(12); DECLARE i INT; FETCH curr INTO i; CLOSE curr; INSERT INTO USER VALUES (i+1,"11111","11111"); END && DELIMITER ;
2.存储函数
创建:
DELIMITER &&
CREATE FUNCTION count_use()
RETURNS INT
BEGIN
RETURN (SELECT COUNT(*) FROM USER);
END&&
DELIMITER ;
调用:
SELECT count_use();
变量的使用:
DECLARE局部变量
DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用相同名字 声明变量的块。
例:declare a,b varchar(20);
变量SET语句
SET var_name = expr [, var_name = expr] ...
在存储程序中的SET语句是一般SET语句的扩展版本。被参考变量可能是子程序内声明的变量,或者是全局服务器变量。
在存储程序中的SET语句作为预先存在的SET语法的一部分来实现。这允许SET a=x, b=y, ...这样的扩展语法。其中不同的变量类型(局域 声明变量及全局和集体变量)可以被混合起来。这也允许把局部变量和一些只对系统变量有意义的选项合并起来。在那种情况下,此选项被识别,但是被忽略了。
例:set a="123",b="123456";
相关文章推荐
- inux下,如何查看mysql的版本
- mysql导出多个表数据为excel方法,substring函数查询
- MySQL导入导出命令
- MySQL的if,case语句使用总结
- mysqldump备份
- 如何修改mysql root密码
- MySQL导入导出命令
- mysql 创建存储过程及测试sql
- Win7主机访问VBox下的MySQL数据库
- mysql 中的奇葩问题:NAME_CONST
- mysql基础介绍
- naavicat 创建MySQL触发器
- mysql存储过程详解(转载)
- MySQL的基本语句
- MySQL数据库重新安装后报错解决方法
- hibernate 和 mysql 中文显示乱码解决方法
- MySQL数据库查询锁行代码示例
- Windows下降权MYSQL和apche的运行级别(普通用户权限运行)
- Windows下降权MYSQL和apche的运行级别(普通用户权限运行)
- mysql-installer-5.5.25.0.msi 安装结束之后测试mysql是否安装成功的方式-环境变量