oracle循环查询效率问题

我现在写了一个代码 代码中for循环,循环中有个查询语句,如果循环次数多会很慢;给大神详细解释下:

 select STAFF_ID from APP_USER_2_ROLE where ROLE_ID='4' and AREA_CODE='09'

这个查询的结果是多条记录,也是for循环的次数;

循环重要执行的sql为:

 SELECT *
        FROM (SELECT B.*, ROWNUM AS ROW_INDEX
        FROM ( SELECT
        A.CHNL_CODE,A.CHNL_NAME,A.CHNL_KIND_ID,C.KIND_VALUE,A.CHNL_ADDR_DETAIL_TOTAL,
        B.AREA_CODE,A.PROVINCE_CODE,A.CITY_CODE
        FROM TF_CHL_CHANNEL A ,
        TF_CHL_MANAGER B , T_CHL_KIND C
        <where>
            A.CHNL_ID=B.CHNL_ID AND A.CHNL_KIND_ID = C.KIND_ID
            <if test="manaStaffId != null">
                AND B.MANA_STAFF_ID = '${manaStaffId}'
            </if>
            <if test="areaCode != null">
                AND B.AREA_CODE = '${areaCode}'
            </if>
            <if test="chnlKindId != null">
                and A.CHNL_KIND_ID in (${chnlKindId})
            </if>
            AND A.STATE IN ('10','11','12')
        </where>
        ) B ) where row_index > ${minRowNum} and row_index &lt;= ${maxRowNum}

求大神指教 oracle有没有办法把这两个sql弄到一起变成一个oracle内部循环,求大神帮忙写下 感谢

方法一:使用存储过程。
方法二:不循环,换个思路,直接将两个sql连接,直接查出所有结果

不太清楚关联条件,可以用标量子查询
SELECT (select STAFF_ID from APP_USER_2_ROLE where ROLE_ID='4' and AREA_CODE=B.AREA_CODE AND ROWNUM = 1) STAFF_ID,
A.CHNL_CODE,A.CHNL_NAME,A.CHNL_KIND_ID,C.KIND_VALUE,A.CHNL_ADDR_DETAIL_TOTAL,
B.AREA_CODE,A.PROVINCE_CODE,A.CITY_CODE
FROM TF_CHL_CHANNEL A ,
TF_CHL_MANAGER B , T_CHL_KIND C