您可以打开一个游标变量执行一个查询,处理完记录集后,再重新打开该游标执行另外一个查询。游标变量在子程序之间传递查询结果时会很有用。

    要声明一个游标变量,首先您需要定义一个 REF CURSOR 类型,然后声明一个该类型的变量 (因此游标变量也常称为动态游标 )。动态游标的类型可以是强类型或弱类型。

    强类型的动态游标需要指定一个返回类型,也就是游标返回的记录类型。STORED PROCEDURE 编译器不允许强类型的动态游标返回跟定义的返回类型不一致的记录集。

    强类型的动态游标不容易出错,但是弱类型的动态游标使用更灵活一些。

    弱类型的动态游标不需要指定返回类型。STORED PROCEDURE引擎接受弱类型的动态游标绑定到任意查询上。由于弱类型的动态游标的类型是可变换的,所以您可以使用预定义的弱类型动态游标类型 SYS_REFCURSOR ,而不用自己再自定义动态游标类型。

    在声明游标变量后,您需要打开它并绑定到一个查询上(使用 OPEN FOR 语句),然后从结果集里获取数据行(使用 FETCH 语句),最后要么关闭游标( 使用 CLOSE 语句)或重新打开并绑定到另外一个查询上( 使用 OPEN FOR 语句)。

    OceanBase 当前版本的游标变量还不支持动态SQL。