在 SPL 例程中使用 DECLARE 语句声明动态游标的名称,并将此游标与 PREPARE 语句在同一 SPL 例程中声明的准备好的语句的语句标识符相关联。
SQL 的 DECLARE 语句在 SPL 例程中创建的动态游标与 SPL 的 FOREACH 语句在 SPL 例程中创建的直接顺序游标不同。(有关顺序游标的语法和用法,请参阅 FOREACH。)
SPL 例程中 DECLARE 语句是 GBase 8s ESQL/C 例程中 DECLARE 支持的语法的子集。
statement_id 指定的准备好的语句文本可以包含问号( ? )作为用户在运行时提供的值的占位符,但 PREPARE 语句中的占位符只能表示数据值,而不能表示 SQL 标识符。
DECLARE 的语句与 SPL 例程中的准备好的语句相关联的动态游标的名称可以由同一 SPL 例程中的动态 SQL 的 OPEN 、CLOSE 、FETCH 和 FREE 语句引用。
CREATE FUNCTION lente
DEFINE first, last VARCHAR(30);
. . .
DATABASE stores_demo;
LET first = "select * from state";
LET lsst = "where code < ?";
PREPARE stmt_1 FROM first || last;
DECLARE cursor_1 FOR stmt_1;
OPEN cursor_1
. . .
CLOSE cursor_1;
FREE cursor_1;
FREE stmt_1;
...
END FUNCTION;