您的位置:首页 > 数据库 > MySQL

Mysql-存储过程和存储函数笔记

2014-04-10 18:28 555 查看
主要还是留着以后翻来复习。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: