私は最近、OracleからPostgresにデータベースを移行するように求められました(私はこの問題に関して本当に選択肢がありませんでした)。 ora2pgツールを使用してDDLのほとんどを移行することができましたが、いくつかのPL/SQLコードを手に入れたときに本当の頭痛が始まりました。PostgreSQLの型の反復と動的変更
私の問題の大半を表すコードがいくつかあります(同様の問題はコードの複数の部分にあります)。
list_aのように宣言された型とするlist_a list_a:= list_a();
list_a_aux list_a:= list_a();
::私はに走った最初の問題だった
TYPE list_a IS TABLE OF TABLE_2;
文を "BULK COLLECTを"
sql_statement := 'SELECT * FROM TABLE_1';
OPEN ref_cursor FOR sql_statement;
FETCH ref_cursor BULK COLLECT INTO list_a_aux;
WHILE list_a_aux.COUNT <> 0
LOOP
FOR n in list_a_aux.FIRST..list_a_aux.LAST
LOOP
IF list_a_aux(n).id = 0 THEN
list_a.EXTEND;
list_a(list_a.COUNT).id = 1;
list_a_aux.DELETE(n);
ELSE
-- More Application Logic
END IF;
END LOOP;
END LOOP;
両方list_aとlist_a_auxは次のようにinitiliazedされています。いくつかのメーリングリストを検索したところ、HEREを指していました。 私はその解決法を理解していましたが、それは十分に単純だと思われましたが、コードに深く掘り下げて、残りのコードと統合する方法を理解できませんでした。私はこのコードにあるものと似た問題を探してみましたが、多くの個々の問題(1,など)の解決策を見つけましたが、この特定の問題にはまったく合わないようです。
このPL/SQLをどのように移行できますか?