0

我有两张桌子catalogcatalog_elements.

一个目录可以包含许多目录元素。

我有一个功能,我需要列出与一个目录关联的所有元素,并且同一页面的顶部我需要显示目录名称和目录评论(一个目录可以包含一个评论)。

我的 DBA 给出了一个存储过程,其中放置内部连接并选择如下记录,

C.cat_name, C.cat_comment, CE.cat_ele_id, CE.cat_ele_date

   [C means catalog, CE means catalog Elements]

但是我喜欢用一秒SYS_REFCURSOR来选择一个目录详情,避免每一行目录详情的重复元组

谁能建议最好的解决方案(在性能方面)?

下面的 sp 有两个光标,我想向 DBA 建议。

(我喜欢使用第二个游标从选择查询中删除 cat_name 和 cat_comment 以获取目录数据)

SP 代码模板如下:

create or replace
PROCEDURE SP_GET_Cat_CatEle_DTL(
          P_CATALOG_ID NUMBER DEFAULT NULL,
          P_RECORDSET  OUT SYS_REFCURSOR,
          P_CATALOG_RECORD OUT SYS_REFCURSOR
          ) AS

BEGIN
  OPEN P_RECORDSET FOR

    select cat_name, cat_comment, cat_ele_id, cat_ele_date from  cat inner join
    cat_ele on cat.id = cat_ele_id where cat.id = P_CATALOG_ID

  OPEN P_CATALOG_RECORD FOR
    SELECT * FROM CATALOG_MASTER WHERE CATALOG_ID = P_CATALOG_ID;

END SP_GET_Cat_CatEle_DTL;
4

1 回答 1

1

在资源占用和时间消耗方面,只使用一个游标是最好的解决方案。查询会稍微复杂一些,但在您的情况下,这应该不是问题。

于 2013-11-06T16:27:43.463 回答