光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。
声明光标
DECLARE cursor_name CURSOR FOR select_statement这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。
SELECT语句不能有INTO子句。
open光标
OPEN cursor_name
这个语句打开先前声明的光标。
fetch光标
FETCH cursor_name INTO var_name [, var_name] ...
这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针。
close光标
CLOSE cursor_name
这个语句关闭先前打开的光标。
如果未被明确地关闭,光标在它被声明的复合语句的末尾被关闭。
示例:
Sql代码 收藏代码
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0
DECLARE a CHAR(16)
DECLARE b,c INT
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1DECLARE cur2 CURSOR FOR SELECT i FROM test.t2DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1OPEN cur1
OPEN cur2
REPEAT
FETCH cur1 INTO a, b
FETCH cur2 INTO c
IF NOT done THEN
IF b <c THEN
INSERT INTO test.t3 VALUES (a,b)
ELSE
INSERT INTO test.t3 VALUES (a,c)
END IF
END IF
UNTIL done END REPEAT
CLOSE cur1
CLOSE cur2
END
有人把简单问题解释的那么复杂,楼主只是问密码修改无效,用不着这么长的解释吧....
楼主修改密码后重启数据库了吗?
或者修改密码后刷一下权限:Flush privileges
年年顺景则源广 岁岁平安福寿多 吉星高照
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)