0

クエリをオブジェクトに格納して、カーソルで使用したり、より大きなクエリのサブクエリとして使用したりする方法はありますか? 即時実行を使用せずにこれらすべてを実行しますか?

これが欲しいとしましょう:

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;

出来ますか?

4

1 に答える 1

0

「クエリをオブジェクトに保存する」

これはビューの定義です。

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;

それはあなたが望むものではありませんか?

于 2013-01-22T13:37:41.590 に答える