Поместите переменную tablename в оператор курсора - PullRequest
0 голосов
/ 09 ноября 2019

Может кто-нибудь помочь мне, как написать динамический запрос в PL / SQL и определить имя таблицы как переменную в динамическом запросе (другими словами, мне нужно написать динамический запрос, который принимает имя таблицы в качестве переменной)? Я думаю, что это можно сделать с помощью курсора, но я не знаю, как поместить имя моей таблицы в качестве переменной в курсоре.

1 Ответ

1 голос
/ 09 ноября 2019

Это один из способов сделать это (если это то, что вы ищете):

SQL> create or replace procedure p_test (par_tab in varchar2,
  2                                      par_out out sys_refcursor
  3                                     )
  4  is
  5  begin
  6    open par_out for 'select * from ' || dbms_assert.sql_object_name(par_tab);
  7  end;
  8  /

Procedure created.

SQL> var l_out refcursor
SQL> exec p_test ('dept', :l_out);

PL/SQL procedure successfully completed.

SQL> print :l_out

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL>
...