weixin_41624242 2019-07-15 11:17 采纳率: 0%
浏览 506

Oracle 子查询引用父字段 查询报错是字段找不到

SELECT a.union_code,
       (select count(1)
        from UNION_MEMBER um
        where um.delete_flag = '0'
        and um.member_union_code in
           (select ubi.union_code
            from union_base_info ubi
            where ubi.union_delete = '0'
            start with ubi.union_code = a.union_code//找不到 
            connect by prior ubi.union_code = 
            ubi.superior_union)
        ) as UNION_MEMBER_NUM
FROM UNION_BASE_INFO a
where a.SUPERIOR_UNION = '0000000000'

现在想用存储过程处理 但是不懂怎么写 求大佬指导

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:44
    关注

    针对您的问题,可以通过以下存储过程来处理:

    CREATE OR REPLACE PROCEDURE PROC_NAME AS
    BEGIN
       FOR rec IN (SELECT a.union_code, 
                          (SELECT COUNT(1)
                           FROM UNION_MEMBER um
                           WHERE um.delete_flag = '0' 
                           AND um.member_union_code IN (SELECT ubi.union_code
                                                        FROM union_base_info ubi
                                                        WHERE ubi.union_delete = '0'
                                                        START WITH ubi.union_code = a.union_code
                                                        CONNECT BY prior ubi.union_code = ubi.superior_union)
                         ) AS UNION_MEMBER_NUM
                   FROM UNION_BASE_INFO a
                   WHERE a.SUPERIOR_UNION = '0000000000')
       LOOP
          /* do something with rec.union_code and rec.UNION_MEMBER_NUM */
       END LOOP;
    END;
    

    其中,存储过程的核心代码是一个简单的循环,遍历了 UNION_BASE_INFO 表中所有 SUPERIOR_UNION='0000000000' 的记录,并根据每条记录中的 union_code 执行子查询,最终将结果保存在 UNION_MEMBER_NUM 中。

    在程序中使用存储过程时,只需要调用 PROC_NAME 即可,具体使用方式为:

    CALL PROC_NAME;
    

    注意,在调用存储过程之前,需要先创建该存储过程。此外,还可以根据实际需求,将上述代码进行修改和优化,以达到更好的性能和效率。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?