간단히 결론 부터 말씀 드리자면 function 에서 cursor 를 이용할 수 없습니다. 그 이유는 PLSQL 로 하나의 procedure 를 여는순간 이미 하나의 transaction 이 시작되도록 되어 있습니다. 그러니 PLSQL 함수내에서 다시 cursor 를 선언한다면 이것은 transaction 내에서 transaction 을 다시 여는 결과가 됩니다. 안타깝게도 PostgreSQL 에서는 아직 multo/level transaction 을 지원하지 못합니다. 아직 구현될 예정도 없는 것으로 알고 있습니다. 다음 8.0 버전 정도에서 기대해 보고 있습니다.
>>임승택 님께서 쓰시길<<
:: 먼저 언어는 'plpgsql'을 사용하려구 하는데요.
:: function문에서 커서를 사용할 수 있는지 궁금합니다.
:: 책을보고 문서도 뒤져 보았지만 커서를 사용한 예제는 한개도 없더라구요..
:: 오라클의 plsql과 비슷하길래 사용하려구 하거든요..
:: 오라클 같은 경우는 프로시져(또는 펑션)에서 커서를 사용할 수 있는데..
:: postgresql에서는 어케사용하는지 모르겠더라구요..
:: 간단한 예제라도 좋으니 알려주세요.
:: 미리 감사드립니다.
|