我正在编写PL / SQL过程。在此过程的主体中,如何在不重写的情况下使用两次相同的查询?
为了简化,假设我有这个SQL查询:
SELECT *
FROM mytable
WHERE age > 18
有没有办法“存储它”,所以我可以这样做:
SELECT COUNT(*) INTO var1
FROM myQuery
我知道 WITH ... AS 关键字,但我知道它只能在当前语句中使用,我希望能够从不同的语句中调用它。
谢谢!
答案 0 :(得分:2)
有各种可能性。以下是我立即想到的,可能还有其他人:
使用您的查询声明一个显式的CURSOR,并在您的过程正文中多次使用该游标。
将查询存储在字符串变量中,并使用EXECUTE IMMEDIATE多次运行
执行一次查询,将结果存储在本地集合中(最有可能是嵌套表),并多次处理这些存储的结果
创建一个执行查询的函数,并将其结果作为嵌套表类型返回。然后SELECT FROM TABLE( my_function )
多次