- MySQL自定义代码块分为自定义函数和自定义过程两种,函数有返回值,过程无返回值;这点和VBA中一样;
- PostgrSQL自定义代码块只有自定义函数,自定义函数可以返回void;
- MySQL和PostgreSQL的自定义函数写法不同
游标
SQL语句执行时,是字段对所有行进行操作的,也就是自带循环,得到的结果为记录的集合而不是一条记录,那怎么遍历取出结果集中的每条记录?通过游标的机制,游标就和中迭代器差不多
在不使用游标时操作针对整个集合
使用游标操作针对单个记录
语句结束符
;
变量定义
@,@@、#,##的含义
参考:https://zhidao.baidu.com/question/238197938.html
变量
条件语句:
循环语句:
循环结束
LEAVE 相当于 break
ITERATE 相当于 continue
LOOP循环
LOOP
SET @count=@count+1;
END LOOP;
LOOP语句本身不带条件判断和循环结束,需要自己写IF和LEAVE来结束循环
add_num: LOOP
SET @count=@count+1;
IF @count=100 THEN
LEAVE add_num ;
END LOOP add_num ;
REPEAT循环
REPEAT
SET @count=@count+1;
UNTIL @count=100
END REPEAT ;
WHILE循环
WHILE @count<100 DO
SET @count=@count+1;
END WHILE ;
Cursor
注意:Cursor相当于迭代器,需判断是否遍历到数据集末尾;SQL中,若Cursor已到末尾,但仍然用Fetch取值,会产生NOT FOUND异常,可通过捕捉该异常来判断是否已遍历完
异常处理