회사에서 이번에 들어가는 프로젝트 오라클에서 티베로 마이그레이션 중인데
CREATE OR REPLACE FUNCTION "GETSEQ" (seq_name in varchar2)
return
number as num number;
begin
select to_number(dbms_xmlgen.getxmltype('select '||seq_name||'.nextval from dual').Extract('//text()')) into num from dual;
return num;
end;
이거 거든요....
CREATE OR REPLACE FUNCTION GETSEQ (seq_name in varchar)
return
number as num number;
begin
select TO_NUMBER(XMLELEMENT('select' ||seq_name|| '.nextval from dual').EXTRACT('//text()')) into num from dual;
return num;
end;
이런식으로 바꿔봤는데 정보가 너무 없어 곤혹입니다.. TO_NUMBER(XMLELEMENT 이 부분 문법이 틀린거 같은데
티베로 공식 문서를 제가 이해를 잘 못하겠슴다... 도움 주실 분 계신지요 ㅜ
굳이 저렇게 XML함수를 사용 안 해도 괜찮을까요?? 어떤 식으로 함수를 만들어야 할지 감이 안 잡힙니다.
EXECUTE IMMEDIATE 을 이용하세요. (Oracle / tibero 동일)
CREATE OR REPLACE FUNCTION getseq(seq_name IN VARCHAR2)
RETURN NUMBER
AS
num NUMBER;
BEGIN
EXECUTE IMMEDIATE 'SELECT '||seq_name||'.NEXTVAL FROM dual' INTO num;
RETURN num;
END;
/
감사합니다!! 정상 작동 하네요 ㅜㅠ 하나 또 배워갑니다