栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检查SYS_REFCURSOR是否为空的最佳方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检查SYS_REFCURSOR是否为空的最佳方法

您需要在使用%FOUND属性之前对游标执行FETCH。将您的代码更改为类似

DECLARE  recs_Table SYS_REFCURSOR;  nTable_1_value  NUMBER;  nTable_2_value  NUMBER;begin    open recs_Table for       select * from table1, table2;    FETCH recs_Table INTO nTable_1_value, nTable_2_value;    if recs_Table%found then        --do this    else        --do that    end if;end;

请注意,您可能需要将变量添加到FETCH语句的INTO子句中,在TABLE1和TABLE2中的每一列都需要添加一个变量。还要注意,编写此游标的方式可能会获得比预期更多的返回行。因为没有指定连接条件,所以您将获得所谓的笛卡尔连接,其中TABLE1中的每一行都被连接到TABLE2中的每一行-
因此,您将获得的行数是(TABLE1中的行数)* (表2中的行数)。

一个可能更简单的方法是使用游标FOR循环,如下所示:

DECLARE  bData_found  BOOLEAN := FALSE;begin  FOR aRow IN (select * from table1, table2)  LOOP    -- If the program gets here, it means a row was fetched    -- do this    bData_found := TRUE;    EXIT;  -- if you only care if data was found and don't want to -- process all the rows  END LOOP;  IF NOT bData_found THEN    -- do that  END IF;end;

分享并享受。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号