私は、Oracle から PostgreSQL への移行に直面しています。テーブルとビューを変換することはできましたが、ストアド プロシージャに少し行き詰まっています。
私はこれから始めました。これは、Oracle では次のようになります。
CREATE OR REPLACE procedure
update_role_func_def(function_id varchar2)
as
cursor role_list_cursor is
select r.id from amm_role r
for update of r.id
;
begin
for role_record in role_list_cursor
loop
insert into AMM_ROLE_FUNC_DEF (RID, FID, GRANT_FUNCT) values (role_record.id, function_id, 'N');
end loop;
commit;
end update_role_func_def;
ドキュメントを見て、私はこの同等物を作成することができました:
CREATE FUNCTION
update_role_func_def(function_id varchar)
returns void
as
$$
DECLARE
cursor role_list_cursor is
select r.id from amm_role r for update of r.id ;
begin
for role_record in role_list_cursor
loop
insert into AMM_ROLE_FUNC_DEF (RID, FID, GRANT_FUNCT) values (role_record.id, function_id, 'N');
end loop;
commit;
end ;
$$
ただし、PgAdmin でこの手順を入力すると、「構文エラー、予期しない CREATE、';' が必要です」という結果になります。
少し途方に暮れています。手順が構文的に正しいかどうかを教えてくれる Postgres 開発者はいますか?