如果 EXECUTE FUNCTION 调用返回多行值的 UDF,则它必须执行游标函数。游标函数可返回一行或多行值,且必须与要执行的函数游标相关联。
如果 SPL 函数返回多于一行,或返回集合数据类型,则您必须以游标访问这些行或集合元素。
要返回多于一行值,必须将一个外部函数(用 C 或 Java™ 语言编写)定义为迭代函数。要获得关于迭代函数的更多信息,请参阅 GBase 8s DataBlade API 程序员指南。
在 SPL 例程中,如果 SELECT 返回多于一行,则您必须使用 FOREACH 语句来逐个地访问这些行。SELECT 语句的 INTO 子句可存储取得的值。要获取更多信息,请参阅 FOREACH。
要返回多行值,SPL 函数必须在其 RETURN 语句中包括 WITH RESUME 关键字。关于如何写 SPL 函数的更多信息,请参阅 GBase 8s SQL 教程指南。
EXEC SQL declare f_curs cursor for execute function get_orders(customer_num) into :ord_num, :ord_date; EXEC SQL open f_curs; while (SQLCODE == 0) EXEC SQL fetch f_curs; EXEC SQL close f_curs;
EXEC SQL declare f_curs cursor for execute function get_orders(customer_num); EXEC SQL open f_curs; while (SQLCODE == 0) EXEC SQL fetch f_curs into :ord_num, :ord_date; EXEC SQL close f_curs;