pl/sql, function 질문드립니다. 0 4 1,012

by 시나브로 [2016.10.06 19:41:48]


안녕하세요. 펑션 관련해서 질문드립니다.
특정 두컬럼의 시간 차를 구하는 펑션 입니다.

질문의 요지는 begin 절 내에 선언된 변수를 begin절 내에서 사용하고 싶은데 어떻게 해야하나요?

begin절 중간쯔음 v_table 이라는 변수를 사용해서 테이블명을 구합니다.

그 구한 테이블명을 begin절 내의 from절에 사용하려고하는데.. 변수로 인식을 못합니다.

: 혹은 $ 등 여러가지 문자를 써보았지만 변수로 인식을 못합니다..

방법이 있을가요? 아니면 펑션 전체를 수정해야하는지.. 

DB 는 오라클입니다. 답변 부탁드립니다..

begin
   v_prefix := case p_db_type

       WHEN 0 then 'ora'
       when 3 then 'pgs'
       when 6 then 'msq'
       when 7 then 'abase'
       when 8 then 'tbr'
       when 9 then 'mar'
       when 10 then 'ifx'
       when 11 then 'mys'
       else ''
  end;

  v_table := v_prefix || '_daemon_alive';


  select sysdate + (server_time - inst_time) into v_output
  from v_table
  where inst_no=p_inst_no;
  


RETURN v_output;
--RETURN v_output;


END;
/

by 모래가흙흙 [2016.10.06 20:45:23]

이거 sql문을 변수에 담아서 실행해줘야 될거같은데,

이거 참조하시면 될거같은데요?

http://www.gurubee.net/lecture/1720

 


by 시나브로 [2016.10.12 23:31:46]

답변감사합니다 말해주신것처럼 execute immediate로 해결했습니다.


by 마농 [2016.10.07 07:58:51]

변수에 담긴 것은 단지 값일 뿐입니다.

테이블이 될 수 없습니다.

Execute Immediate 를 이용하세요.


by 시나브로 [2016.10.12 23:31:52]

답변감사합니다 말해주신것처럼 execute immediate로 해결했습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입