我需要制作一个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')
放在一个变量中,但是没有一个起作用。
答案 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;