gpt4 book ai didi

oracle - 使用 Oracle 表作为输入参数编写 Oracle 存储过程

转载 作者:行者123 更新时间:2023-12-02 02:37:12 30 4
gpt4 key购买 nike

如何编写 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com