2010-08-11 1 views

답변

1

이것은 DB2 테이블 함수와 유사하지만 컬럼 목록을 지정하지 않습니다.

예. 이런 식으로 :

create function do_some_stuff() returns table(<column_list>) 
language sql 
begin atomic 

    return 
    select t.* from some_table t; 

[email protected] 

<column_list> 사양이 없습니다. 이러한 함수는 전달 된 매개 변수와 내부 논리에 따라 다른 필드 집합을 사용하여 테이블을 반환 할 수 있습니다. 대부분의 경우이 유형의 함수 결과가 클라이언트 측에 결과를 반환하는 데 사용됩니다.

REF_CURSOR 기반의 선언 유형은 Oracle 8에서 이러한 작업을 수행하는 유일한 방법이지만 Oracle 9i에는 내장 유형 sys_refcursor가 있습니다 (예 : here 참조).

선언이 약한 유형이고 DB2가 sys_refcursor에 대한 아날로그를 가지고 있지 않기 때문에 자동 변환은 이러한 선언을 변환하는 방법을 결정할 수 없습니다.

변환하는 유일한 방법은 저장 프로 시저를 조사하고 커서에서 반환 된 필드 집합을 수동으로 재구성하는 것입니다. 그런 다음 강력한 선언 형 커서로 Oracle 선언을 다시 작성하고이를 MTK로 처리 할 수 ​​있습니다.

  1. DB2가 지원하는 약한 유형 커서 : 또는 수동으로 ... DB2 측에서


    업데이트 논리를 다시 작성합니다.

  2. IBM 책에 설명 된 이주 호환성 문제에 대한 솔루션은 here (경고 : .pdf 파일 약 3.18MB)을 참조하십시오. 여기서 "ref_cursor"문자열을 검색하십시오.
+0

감사합니다. MTK가 강력한 형식의 커서를 처리 할 수 ​​있다는 것을 암시하는 것처럼 보입니다. 그 맞습니까? –

+0

미안하지만 충분한 DB2 경험이 없지만 MTK 기능에 대한 질문에 대한 답변이 있습니다 - 답변 업데이트를보십시오. – ThinkJet

관련 문제