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

主要还是留着以后翻来复习。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值