gpt4 book ai didi

oracle - 将一堆字段提取到包中定义的自定义对象中

转载 作者:行者123 更新时间:2023-12-04 06:32:23 25 4
gpt4 key购买 nike

假设我有一个包裹 A

type type_bla is record (id number, ...);

同样在同一个包体中,我有一个查询,它获取构造对象所需的所有字段。如果我有一个存储对象,我可以这样做:
select type_bla(t1.id, t2.foo, t1.bar ...)
into instance_of_type_bla
from table t
inner join table2 t2 ON ...

但是由于我在包中定义了一个自定义类型 - 它没有构造函数,所以我不得不将其更改为:
select t1.id, t2.foo, t1.bar ...
into instance_of_type_bla.id, instance_of_type_bla.foo ...
from table t
inner join table2 t2 ON ...

填充此类对象是否更优雅?

最佳答案

您应该能够简单地将数据直接选择到记录中,就像您声明 %ROWTYPE 记录一样。

我要申报一个包裹PKG_FOO哪里GET_REC函数填充自定义记录

SQL> create or replace package pkg_foo
2 as
3 type my_rec is record( col1 number, col2 number, col3 varchar2(10) );
4 function get_rec
5 return my_rec;
6 end;
7 /

Package created.

SQL> create or replace package body pkg_foo
2 as
3 function get_rec
4 return my_rec
5 is
6 l_rec my_rec;
7 begin
8 select 1, 2, 'Justin'
9 into l_rec
10 from dual;
11 return l_rec;
12 end;
13 end;
14 /

Package body created.

只是为了表明它有效
SQL> declare
2 l_rec pkg_foo.my_rec;
3 begin
4 l_rec := pkg_foo.get_rec;
5 p.l( 'Col1 = ' || l_rec.col1 );
6 p.l( 'Col2 = ' || l_rec.col2 );
7 p.l( 'Col3 = ' || l_rec.col3 );
8 end;
9 /
Col1 = 1
Col2 = 2
Col3 = Justin

关于oracle - 将一堆字段提取到包中定义的自定义对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254211/

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