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