안녕 하십니까.. 네비스텍에 이성한 입니다.
지금 PL/pgSQL에대한 문법을 공부 하고 있는데 다음 예제에서 궁굼증이 있어
질문을 합니다.
(참고로 Oracle에 PL/SQL과 비교해서 질문을 하겠습니다. 양해를 부탁합니다.)
다음과 같은 예제가 PostgreSQL 7.1 Documentation에 있더군요
====================================================================
create function ftab1_func(integer,text) returns integer
as'
declare
/*---------------------------------------*/
/* Parameter Alias */
/*---------------------------------------*/
var1 alias for $1;
var2 alias for $2;
begin
/*---------------------------------------*/
/* Loop Start */
/*---------------------------------------*/
while var1 > nextval(''f_id_seq'') loop
insert into ftab1
values(currval(''f_id_seq''),
''aa''||currval(''f_id_seq''),
var2||currval(''f_id_seq'')
);
end loop;
return var1+1;
end;
'language 'plpgsql';
====================================================================
위 예제는 문법 적으로는 어려운것이 없어 쉽게 이해를 했는데요
기능적인 질문이 있습니다.
1) PL/pgSQL 에서는 Cursor(Oracle,PL/SQL처럼) 처리기능은 없는가요??
(Cursor open, close ,fetch....)
기능이 없다면 Cursor처리를 할 수 있는 다른 방법은 없는가요
2) 위 예제 while 중간에 insert 처리를 하는데 중간에 에러 발생시
임의에 처리를 할수 있는 방법은 없습니까
(SQL 문장이므로 SQL Error Code 사용 또는
Oracle ,PL/SQL처럼 Exceptions으로 처리하는 방법)
3) 예러 발생시 ROLLBACK 처리를 하는 방법 /
모든 처리가 완료시 COMMIT 처리 방법은 따로 없는가요?
트랜잭션 관리를 위한...
위 3질문에 대한 답변에 대한 sample source 가 있으면 부탁합니다.
감사합니다.
그럼 수고 하십시오
|