Как сделать имя таблицы из двухстрочного столбца? - PullRequest
2 голосов
/ 28 апреля 2019

Мне нужно сделать скрипт PL / SQL.Входными данными являются имя схемы и имя таблицы.Как я могу сделать это с именем таблицы?

Так, например, я хотел бы сделать это:

create or replace procedure proc(schema in varchar2, table in varchar2) is
begin
select * from 'schema.table';
end;

begin
proc('db', 'items');
end;

Так что я хотел бы получить все из db.items.

Я пробовал concat, ( 'schema' || '.' || 'table'), поместил его в переменную, но ни один из них не сработал.

1 Ответ

2 голосов
/ 28 апреля 2019

Что вам нужно, это динамический sql. Пример, который вернет и напечатает количество строк (вы можете изменить его в соответствии с вашими потребностями):

SQL> set serveroutput on  -- to be able to see the printed results.
SQL> create or replace procedure proc(p_schema in varchar2, p_table in varchar2) is
    v_sql varchar2(100);
    v_result number;
begin
    v_sql := 'select count(*) from :1' || '.' || ':2';
    EXECUTE IMMEDIATE v_sql into v_result USING p_schema, p_table;
    DBMS_OUTPUT.PUT_LINE ('Total rows in table: '|| v_result );
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...