Oracle通用流媒体过滤器功能

时间:2018-03-26 20:42:05

标签: oracle function streaming transformation pipeline

假设我的Oracle数据库中有多个不同的表。所有这些都有一些常见的字段,如STATUS,PREP_STATUS和CREATEDATE。因为我很懒,所以我不想复制相同的代码。我想做点什么:

SELECT * FROM TABLE(my_filter(CURSOR(SELECT * FROM tableA/B/C/D)))

其中my_filter()是我自己的通用过滤器函数。它接收游标,过滤特定记录,然后“转发”记录。类似下面的伪代码。

FUNCTION my_filter(p_cur IN SYS_REFCURSOR)
    RETURN SYS_REFCURSOR PIPELINED
AS
    l_var SYS_REFCURSOR;
BEGIN
    FOR l_var IN SELECT * FROM CURSOR(p_cur)
        WHERE (l_var.STATUS = 'ACTIVE')
        AND ...);
    LOOP
        PIPE ROW (l_var);
    END LOOP;
END;

我见过他们定义类型的示例,但我正在寻找一种通用解决方案,它基本上适用于具有这些公共属性的所有表。

知道如何实现吗?

非常感谢你的帮助。

0 个答案:

没有答案