3 개의 값을 가진 객체를 반환하는 함수가 있습니다. select 문에서이 함수를 호출하고 각 값을 다른 열로 유지할 수 있습니까? 3 가지 기능으로 나눌 수는 있지만 성능상의 이유로 값을 유지하고 싶었습니다. (그래서 오라클은 쿼리의 모든 행에 대해 3 개 매우 유사한 복잡한 함수를 호출 할 필요가 없습니다.)에 대한 그래서오라클의 select 문에서 객체 유형 사용
: 내가 좋아하는 것
create type test_obj is object (
a NUMBER,
b NUMBER,
c NUMBER);
create or replace function test_func (
pinput NUMBER)
return test_obj
as
begin
return test_obj(0, 0, 0);
end test_func;
SELECT 문에서 test_func 호출 할 수 있도록를 함수를 여러 번 호출하지 않고 a, b 및 c를 서로 다른 열로 만들 수 있습니다. 어쩌면 이런 걸 생각했지만, 그것은 작동하지 않습니다
select
iv.col1,
iv.col2,
iv.func_data.a,
iv.func_data.b,
iv.func_data.c
from
(select
mt.col1,
mt.col2,
test_func(mt.input) as func_data
from
my_table mt) iv
오라클 10g에서 이런 일을 할 수있는 방법이 있나요, 또는이 문제를 해결하기 위해 더 나은 방법이?
감사합니다. 이것은 나를 도왔다. – filiprem
문제는 단순히 이름 확인과 관련됩니다. Oracle은 항상 SELECT 문의 점 앞에있는 첫 번째 부분을 데이터베이스의 테이블 별칭 또는 동의어/패키지로 해석합니다. 또한 모든 열을 검사하지 않습니다. 따라서 table_alias.column.attribute로 이름을 완전히 한정해야합니다. – Falco