-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------主要还是留着以后翻来复习。
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";