

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Migrasikan fungsi dan prosedur Oracle yang memiliki lebih dari 100 argumen ke PostgreSQL
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql"></a>

*Srinivas Potlachervoo, Amazon Web Services*

## Ringkasan
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-summary"></a>

Pola ini menunjukkan cara memigrasikan fungsi dan prosedur Oracle Database yang memiliki lebih dari 100 argumen ke PostgreSQL. Misalnya, Anda dapat menggunakan pola ini untuk memigrasikan fungsi dan prosedur Oracle ke salah satu layanan database AWS yang kompatibel dengan PostgreSQL berikut:
+ Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL
+ Edisi yang Kompatibel dengan Amazon Aurora PostgreSQL

PostgreSQL tidak mendukung fungsi atau prosedur yang memiliki lebih dari 100 argumen. Sebagai solusinya, Anda dapat menentukan tipe data baru yang memiliki bidang tipe yang cocok dengan argumen fungsi sumber. Kemudian, Anda dapat membuat dan menjalankan PL/pgSQL fungsi yang menggunakan tipe data kustom sebagai argumen.

## Prasyarat dan batasan
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ Sebuah [instans database Amazon RDS Oracle (DB)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html)
+ [Instans [Amazon RDS for PostgreSQL DB atau instans DB yang kompatibel](https://aws.amazon.com/getting-started/hands-on/create-connect-postgresql-db/) dengan Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.html)

**Versi produk**
+ Amazon RDS Oracle DB instans versi 10.2 dan yang lebih baru
+ Instans Amazon RDS PostgreSQL DB versi 9.4 dan yang lebih baru, atau instans DB yang kompatibel dengan Aurora PostgreSQL versi 9.4 dan yang lebih baru
+ Oracle SQL Developer versi 18 dan yang lebih baru
+ pgAdmin versi 4 dan yang lebih baru

## Arsitektur
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-architecture"></a>

**Tumpukan teknologi sumber**
+ Amazon RDS Oracle DB instans versi 10.2 dan yang lebih baru

**Tumpukan teknologi target**
+ Instans Amazon RDS PostgreSQL DB versi 9.4 dan yang lebih baru, atau instans DB yang kompatibel dengan Aurora PostgreSQL versi 9.4 dan yang lebih baru

## Alat
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-tools"></a>

**Layanan AWS**
+ [Amazon Relational Database Service (Amazon RDS) untuk PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) membantu Anda mengatur, mengoperasikan, dan menskalakan database relasional PostgreSQL di AWS Cloud.
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL.

**Layanan lainnya**
+ [Oracle SQL Developer](https://www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html) adalah lingkungan pengembangan terintegrasi yang menyederhanakan pengembangan dan pengelolaan database Oracle baik dalam penerapan tradisional maupun berbasis cloud.
+ [pgAdmin](https://www.pgadmin.org/) adalah alat manajemen sumber terbuka untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database. 

## Praktik terbaik
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-best-practices"></a>

Pastikan tipe data yang Anda buat cocok dengan bidang tipe yang disertakan dalam fungsi atau prosedur Oracle sumber.

## Epik
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-epics"></a>

### Jalankan fungsi atau prosedur Oracle yang memiliki lebih dari 100 argumen
<a name="run-an-oracle-function-or-procedure-that-has-more-than-100-arguments"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Membuat atau mengidentifikasi Oracle/PLSQL fungsi atau prosedur yang ada yang memiliki lebih dari 100 argumen. | Buat Oracle/PLSQL fungsi atau prosedur yang memiliki lebih dari 100 argumen.<br />-atau-<br />Identifikasi Oracle/PLSQL fungsi atau prosedur yang ada yang memiliki lebih dari 100 argumen.<br />Untuk informasi selengkapnya, lihat bagian [14.7 CREATE FUNCTION Statement](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/lnpls/CREATE-FUNCTION-statement.html#GUID-B71BC5BD-B87C-4054-AAA5-213E856651F2) dan [14.11 CREATE PROCEDURE Statement](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/lnpls/CREATE-PROCEDURE-statement.html#GUID-5F84DB47-B5BE-4292-848F-756BF365EC54) dalam dokumentasi Oracle Database. | Pengetahuan Oracle/PLSQL | 
| Kompilasi Oracle/PLSQL fungsi atau prosedur. | Kompilasi Oracle/PLSQL fungsi atau prosedur.<br />Untuk informasi selengkapnya, lihat [Mengompilasi fungsi](https://docs.oracle.com/cd/E37097_01/doc.42/e35128/GUID-6B7B6F82-616D-4915-82BE-D4AE7F59CF37.htm#AEUTL165) dalam dokumentasi Oracle Database. | Pengetahuan Oracle/PLSQL | 
| Jalankan Oracle/PLSQL fungsinya. | Jalankan Oracle/PLSQL fungsi atau prosedur. Kemudian, simpan outputnya. | Pengetahuan Oracle/PLSQL | 

### Tentukan tipe data baru yang cocok dengan argumen fungsi sumber atau prosedur
<a name="define-a-new-data-type-that-matches-the-source-functionapos-s-or-procedureapos-s-arguments"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Tentukan tipe data baru di PostgreSQL. | Tentukan tipe data baru di PostgreSQL yang mencakup semua bidang yang sama yang muncul dalam argumen fungsi atau prosedur Oracle sumber.<br />Untuk informasi selengkapnya, lihat [CREATE TYPE](https://www.postgresql.org/docs/current/sql-createtype.html) di dokumentasi PostgreSQL. | Pengetahuan PL/pgSQL PostgreSQL | 

### Buat fungsi PostgreSQL yang menyertakan argumen TYPE baru
<a name="create-a-postgresql-function-that-includes-the-new-type-argument"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat fungsi PostgreSQL yang mencakup tipe data baru. | Buat fungsi PostgreSQL yang menyertakan argumen baru. `TYPE`<br />Untuk meninjau fungsi contoh, lihat bagian **Informasi tambahan** dari pola ini. | Pengetahuan PL/pgSQL PostgreSQL | 
| Kompilasi fungsi PostgreSQL. | Kompilasi fungsi di PostgreSQL. Jika bidang tipe data baru cocok dengan argumen fungsi sumber atau prosedur, maka fungsi berhasil dikompilasi. | Pengetahuan PL/pgSQL PostgreSQL | 
| Jalankan fungsi PostgreSQL. | Jalankan fungsi PostgreSQL. | Pengetahuan PL/pgSQL PostgreSQL | 

## Pemecahan masalah
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Fungsi mengembalikan kesalahan berikut:<br />**KESALAHAN: kesalahan sintaks di dekat ""** <statement> | Pastikan bahwa semua pernyataan fungsi diakhiri dengan titik koma (). `;` | 
| Fungsi mengembalikan kesalahan berikut:<br />**ERROR: "" bukan variabel yang diketahui** <variable> | Pastikan bahwa variabel yang digunakan dalam badan fungsi tercantum dalam `DECLARE` bagian fungsi. | 

## Sumber daya terkait
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-resources"></a>
+ [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)
+ [BUAT JENIS (dokumentasi](https://www.postgresql.org/docs/11/sql-createtype.html) PostgreSQL)

## Informasi tambahan
<a name="migrate-oracle-functions-and-procedures-that-have-more-than-100-arguments-to-postgresql-additional"></a>

**Contoh fungsi PostgreSQL yang mencakup argumen TYPE**

```
CREATE OR REPLACE FUNCTION test_proc_new
(
    IN p_rec type_test_proc_args
) 
RETURNS void
AS
$BODY$
BEGIN

    /*
    **************
    The body would contain code to process the input values.
    For our testing, we will display couple of values.
    ***************
    */
    RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_acct_id: ', p_rec.p_acct_id);
    RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_id: ', p_rec.p_ord_id);
    RAISE NOTICE USING MESSAGE = CONCAT_WS('', 'p_ord_date: ', p_rec.p_ord_date);
   
END;
$BODY$
LANGUAGE plpgsql 
COST 100;
```