在对象上存储 sql 查询
Posted
技术标签:
【中文标题】在对象上存储 sql 查询【英文标题】:Store sql query on object 【发布时间】:2013-01-22 13:33:21 【问题描述】:有没有办法将查询存储在对象中,以便您可以在游标中使用它或作为更大查询的子查询?这一切都没有使用立即执行?
假设你想要这个:
set serveroutput on;
DECLARE
CNT NUMBER;
v1 varchar2(4000);
SQL_QUERY view := SELECT table_name FROM USER_TABLES;
CURSOR C1 IS
SQL_QUERY;
BEGIN
OPEN C1;
FETCH C1 INTO V1;
dbms_output.put_line('name of the first table: '||v1);
CLOSE C1;
SELECT COUNT(*) INTO CNT FROM SQL_QUERY;
dbms_output.put_line('Count: '|| cnt);
end;
有可能吗?
【问题讨论】:
【参考方案1】:“将查询存储在对象中”
这是视图的定义。
create view foo as select table_name from user_tables;
然后
DECLARE
CNT NUMBER;
v1 varchar2(4000);
CURSOR C1 IS
select * from foo;
BEGIN
OPEN C1;
FETCH C1 INTO V1;
dbms_output.put_line('name of the first table: '||v1);
CLOSE C1;
SELECT COUNT(*) INTO CNT FROM (select null from foo);
dbms_output.put_line('Count: '|| cnt);
end;
这不是你想要的吗?
【讨论】:
不是真的,我想要一种方法来定义一个查询,我可以用它来封装另一个查询或在游标中使用它。 @JGS,那么你必须使用动态SQL,即REF CURSOR或EXECUTE_IMMEDIATE等...以上是关于在对象上存储 sql 查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 RStudio 连接到本地存储的压缩 SQL 数据库并在其上运行查询