通过动态SQL,动态游标OPEN语句中的SELECT语句可以由文本字符串或者内容为文本字符串的用户变量表示。
语法格式:
OPEN <游标名称> FOR <select_stmt>
参数说明如下:
<select_stmt>:打开动态游标的动态SQL语句。
示例:SELECT * FROM hunter.t1
DECLARE cur REF CURSOR;
SET v = 'SELECT * FROM hunter.t1';
SET @sql_str = v;
OPEN cur FOR @sql_str;
FETCH cur INTO i, j;
动态游标使用时需注意如下事项:
(1)动态游标在DECLARE时,不允许指定任何SELECT语句。
(2)动态游标允许嵌套,如果在嵌套中有OPEN操作,必须在同一嵌套中有CLOSE操作与OPEN操作成对出现,避免重复OPEN操作的错误。
(3)动态游标只能用在存储过程中。
示例1:查询语句是静态SQL语句。
gbase> DELIMITER //
gbase> DROP PROCEDURE IF EXISTS docursor //
Query OK, 0 rows affected
gbase> CREATE PROCEDURE docursor()
BEGIN
DECLARE s_region VARCHAR(40);
DECLARE DONE INT DEFAULT(0);