如何编写 Oracle 存储过程,以表 (X) 作为输入参数,并在过程内部使用表 X 来与另一个表 Y 联接?
表 X 将包含数千条记录。
不希望将表名作为 varchar 传递,然后使用动态 SQL(因此,此选项不适用)
最佳答案
从 19.6 开始,您可以创建 SQL 宏。这将返回一个带有查询片段的字符串。
在解析时,数据库将使用您传递给它的表来查找/替换表参数:
create or replace function f ( tab dbms_tf.table_t )
return varchar2 sql_macro as
begin
return 'select * from tab
join ( select level rn from dual connect by level <= 2 )
on c1 = rn';
end f;
/
create table t1 (
c1 int
);
create table t2 (
c1 int
);
insert into t1 values ( 1 );
insert into t2 values ( 2 );
select * from f ( t1 );
C1 RN
1 1
select * from f ( t2 );
C1 RN
2 2
关于oracle - 使用 Oracle 表作为输入参数编写 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64139587/