如何从两个字符串列中创建表名?

时间:2019-04-28 14:42:01

标签: oracle plsql

我需要制作一个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 个答案:

答案 0 :(得分:2)

您需要的是动态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;