假设我的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;
我见过他们定义类型的示例,但我正在寻找一种通用解决方案,它基本上适用于具有这些公共属性的所有表。
知道如何实现吗?
非常感谢你的帮助。