All Products
Search
Document Center

PolarDB:DBMS_UTILITY

Last Updated:Aug 27, 2026

Paket DBMS_UTILITY berisi sejumlah subprogram utilitas. PolarDB for PostgreSQL (Compatible with Oracle) mendukung subset fungsi dan prosedur dari paket DBMS_UTILITY milik Oracle.

Paket DBMS_UTILITY menyediakan hal-hal berikut:

API

Type

Return type

Description

ANALYZE_DATABASE(method [, estimate_rows [, estimate_percent [, method_opt ]]])

stored procedure

N/A

Menganalisis tabel database.

ANALYZE_PART_OBJECT(schema, object_name [, object_type [, command_type [, command_opt [, sample_clause ]]]])

stored procedure

N/A

Menganalisis tabel partisi.

ANALYZE_SCHEMA(schema, method [, estimate_rows [, estimate_percent [, method_opt ]]])

stored procedure

N/A

Menganalisis tabel skema.

CANONICALIZE(name, canon_name OUT, canon_len)

stored procedure

N/A

Menormalisasi string. Misalnya, menghapus spasi berlebih.

COMMA_TO_TABLE(list, tablen OUT, tab OUT)

stored procedure

N/A

Mengonversi daftar nama yang dipisahkan koma menjadi tabel nama.

DB_VERSION(version OUT, compatibility OUT)

stored procedure

N/A

Mendapatkan versi database.

EXEC_DDL_STATEMENT(parse_string)

stored procedure

N/A

Menjalankan pernyataan DDL.

FORMAT_CALL_STACK

function

TEXT

Mengembalikan konten terformat dari tumpukan panggilan saat ini.

FORMAT_ERROR_STACK

function

TEXT

Mengembalikan konten terformat dari tumpukan panggilan pada titik tempat pengecualian dilemparkan.

FORMAT_ERROR_BACKTRACE

function

TEXT

Mengembalikan konten terformat dari tumpukan panggilan pada titik tempat pengecualian dilemparkan.

GET_CPU_TIME

function

NUMBER

Mendapatkan waktu CPU saat ini.

GET_DEPENDENCY(type, schema, name)

stored procedure

N/A

Mendapatkan objek yang bergantung pada objek tertentu.

GET_HASH_VALUE(name, base, hash_size)

function

NUMBER

Menghitung nilai hash.

GET_PARAMETER_VALUE(parnam, intval OUT, strval OUT)

stored procedure

BINARY_INTEGER

Mendapatkan nilai parameter inisialisasi database.

GET_TIME

function

NUMBER

Mendapatkan waktu saat ini.

NAME_TOKENIZE(name, a OUT, b OUT, c OUT, dblink OUT, nextpos OUT)

stored procedure

N/A

Mengurai nama tertentu menjadi komponen-komponennya.

TABLE_TO_COMMA(tab, tablen OUT, list OUT)

stored procedure

N/A

Mengonversi tabel nama menjadi daftar yang dipisahkan koma.

Dibandingkan dengan Oracle, PolarDB for PostgreSQL (Oracle Compatible) menyediakan implementasi parsial dari paket DBMS_UTILITY. Hanya fungsi dan stored procedure yang tercantum dalam tabel di atas yang didukung.

Tabel ini mencantumkan variabel publik yang tersedia dalam paket DBMS_UTILITY.

Parameter

Type

Value

Description

inv_error_on_restrictions

PLS_INTEGER

1

Untuk stored procedure INVALIDATE.

lname_array

TABLE

—

Menyimpan daftar nama panjang.

uncl_array

TABLE

—

Menyimpan daftar pengguna dan nama.

Jenis DBMS_UTILITY

LNAME_ARRAY

Jenis LNAME_ARRAY menyimpan daftar nama panjang, termasuk nama yang memenuhi syarat penuh.

TYPE lname_array IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;

UNCL_ARRAY

Jenis UNCL_ARRAY menyimpan daftar nama pengguna dan objek.

TYPE uncl_array IS TABLE OF VARCHAR2(227) INDEX BY BINARY_INTEGER;

Penggunaan

ANALYZE_DATABASE, ANALYZE_SCHEMA, dan ANALYZE_PART_OBJECT

Gunakan stored procedure ANALYZE_DATABASE(), ANALYZE_SCHEMA(), dan ANALYZE_PART_OBJECT() untuk mengumpulkan statistik untuk tabel dalam database. Saat Anda menjalankan pernyataan ANALYZE, Postgres melakukan sampling data dalam tabel dan mencatat statistik distribusi dalam tabel sistem pg_statistics.

Perbedaan utama antara ANALYZE_DATABASE, ANALYZE_SCHEMA, dan ANALYZE_PART_OBJECT terletak pada cakupannya:

  • ANALYZE_DATABASE: Menganalisis semua tabel di semua skema dalam database saat ini.

  • ANALYZE_SCHEMA: Menganalisis semua tabel dalam skema tertentu dalam database saat ini.

  • ANALYZE_PART_OBJECT: Menganalisis satu tabel.

Sintaks

Sintaks untuk perintah ANALYZE adalah sebagai berikut:

ANALYZE_DATABASE(method VARCHAR2 [, estimate_rows NUMBER
  [, estimate_percent NUMBER [, method_opt VARCHAR2 ]]])

ANALYZE_SCHEMA(schema VARCHAR2, method VARCHAR2
  [, estimate_rows NUMBER [, estimate_percent NUMBER
  [, method_opt VARCHAR2 ]]])

ANALYZE_PART_OBJECT(schema VARCHAR2, object_name VARCHAR2
  [, object_type CHAR [, command_type CHAR
  [, command_opt VARCHAR2 [, sample_clause ]]]])

Parameter

  • ANALYZE_DATABASE dan ANALYZE_SCHEMA

    Parameter

    Description

    method

    Menentukan apakah stored procedure ANALYZE mengisi tabel pg_statistics atau menghapus baris darinya.

    • Metode DELETE menghapus baris terkait dari pg_statistics.

    • Metode COMPUTE dan ESTIMATE menganalisis satu atau beberapa tabel dan mencatat informasi distribusi dalam pg_statistics.

      Catatan

      COMPUTE dan ESTIMATE identik. Kedua metode menjalankan pernyataan ANALYZE Postgres. Semua parameter lain divalidasi lalu diabaikan.

    estimate_rows

    Menentukan jumlah baris yang menjadi dasar estimasi statistik.

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

    estimate_percent

    Menentukan persentase baris yang menjadi dasar estimasi statistik.

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

    method_opt

    Jenis objek yang akan dianalisis. Kombinasi apa pun dari berikut ini:

    [ FOR TABLE ]
    [ FOR ALL [ INDEXED ] COLUMNS ] [ SIZE n ]
    [ FOR ALL INDEXES ]

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

  • ANALYZE_PART_OBJECT

    Parameter

    Description

    schema

    Nama skema yang berisi objek yang akan dianalisis.

    object_name

    Nama objek partisi yang akan dianalisis.

    object_type

    Jenis objek yang akan dianalisis. Nilai yang valid adalah T untuk tabel dan I untuk indeks.

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

    command_type

    Jenis analisis yang akan dilakukan. Nilai yang valid adalah:

    • E: Mengumpulkan statistik estimasi berdasarkan jumlah atau persentase baris yang ditentukan dalam sample_clause.

    • C: Menghitung statistik eksak.

    • V: Memvalidasi struktur dan integritas partisi.

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

    command_opt

    Jika command_type adalah C atau E, nilainya dapat berupa kombinasi apa pun dari berikut ini:

    [ FOR TABLE ]
    [ FOR ALL COLUMNS ]
    [ FOR ALL LOCAL INDEXES ]

    Jika command_type adalah V, nilainya dapat berupa CASCADE jika object_type adalah T.

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

    sample_clause

    Jika command_type adalah E, klausa ini menentukan jumlah atau persentase baris yang menjadi dasar estimasi.

    SAMPLE n { ROWS | PERCENT }

    Parameter ini disediakan untuk kompatibilitas dan diabaikan.

Canonicalize

Stored procedure CANONICALIZE menormalisasi string input sebagai berikut:

  • Jika string tidak diapit tanda kutip ganda, prosedur memvalidasi bahwa string tersebut merupakan identifier yang valid. Jika validasi gagal, prosedur melemparkan pengecualian. Jika string diapit tanda kutip ganda, semua karakter diperbolehkan.

  • Jika string tidak diapit tanda kutip ganda dan tidak mengandung titik, prosedur mengonversi semua karakter alfabet menjadi huruf kapital serta menghapus spasi di awal dan akhir.

  • Jika string diapit tanda kutip ganda dan tidak mengandung titik, prosedur menghapus tanda kutip ganda tersebut.

  • Jika string mengandung titik dan tidak ada segmen yang diapit tanda kutip ganda, prosedur mengonversi setiap segmen menjadi huruf kapital lalu mengapitnya dengan tanda kutip ganda.

  • Jika string mengandung titik dan beberapa segmen diapit tanda kutip ganda, prosedur mengembalikan segmen yang dikutip apa adanya, termasuk tanda kutipnya. Segmen yang tidak dikutip dikonversi menjadi huruf kapital dan diapit tanda kutip ganda.

Sintaks

CANONICALIZE(name VARCHAR2, canon_name OUT VARCHAR2,
  canon_len BINARY_INTEGER)

Parameter

Parameter

Description

name

String input yang akan dinormalisasi.

canon_name

String output hasil normalisasi.

canon_len

Jumlah byte dalam name yang akan dinormalisasi, dimulai dari karakter pertama.

Contoh

  1. Buat stored procedure pembungkus untuk memanggil DBMS_UTILITY.CANONICALIZE dan menampilkan hasilnya.

    CREATE OR REPLACE PROCEDURE canonicalize (
        p_name      VARCHAR2,
        p_length    BINARY_INTEGER DEFAULT 30
    )
    IS
        v_canon     VARCHAR2(100);
    BEGIN
        DBMS_UTILITY.CANONICALIZE(p_name,v_canon,p_length);
        DBMS_OUTPUT.PUT_LINE('Canonicalized name ==>' || v_canon || '<==');
        DBMS_OUTPUT.PUT_LINE('Length: ' || LENGTH(v_canon));
    EXCEPTION
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('SQLERRM: ' || SQLERRM);
            DBMS_OUTPUT.PUT_LINE('SQLCODE: ' || SQLCODE);
    END;
  2. Jalankan prosedur pembungkus dengan string yang dikutip yang berisi karakter khusus.

    EXEC canonicalize('"_+142%"');

    Hasil berikut dikembalikan:

    Canonicalized name ==>_+142%<==
    Length: 6

COMMA_TO_TABLE

Sintaks

Stored procedure COMMA_TO_TABLE mengonversi daftar nama yang dipisahkan koma menjadi tabel. Setiap entri dalam daftar menjadi entri tabel. Nama-nama tersebut harus diformat sebagai identifier yang valid.

COMMA_TO_TABLE(list VARCHAR2, tablen OUT BINARY_INTEGER,
  tab OUT { LNAME_ARRAY | UNCL_ARRAY })

Parameter

Parameter

Description

list

Daftar nama yang dipisahkan koma.

tablen

Jumlah entri dalam tab.

tab

Tabel output yang berisi nama-nama dari list.

LNAME_ARRAY

Tabel DBMS_UTILITY.LNAME_ARRAY. Untuk informasi lebih lanjut, lihat LNAME_ARRAY.

UNCL_ARRAY

Tabel DBMS_UTILITY.UNCL_ARRAY. Untuk informasi lebih lanjut, lihat UNCL_ARRAY.

Contoh

  1. Buat stored procedure pembungkus untuk mengonversi daftar nama menjadi tabel.

    CREATE OR REPLACE PROCEDURE comma_to_table (
        p_list      VARCHAR2
    )
    IS
        r_lname     DBMS_UTILITY.LNAME_ARRAY;
        v_length    BINARY_INTEGER;
    BEGIN
        DBMS_UTILITY.COMMA_TO_TABLE(p_list,v_length,r_lname);
        FOR i IN 1..v_length LOOP
            DBMS_OUTPUT.PUT_LINE(r_lname(i));
        END LOOP;
    END;
  2. Jalankan pernyataan berikut:

    EXEC comma_to_table('polardb.dept, polardb.emp, polardb.jobhist');

    Pernyataan tersebut mengembalikan hasil berikut:

    polardb.dept
     polardb.emp
     polardb.jobhist

DB_VERSION

Sintaks

Stored procedure DB_VERSION mengembalikan versi database.

DB_VERSION(version OUT VARCHAR2, compatibility OUT VARCHAR2)

Parameter

Parameter

Description

version

Versi database.

compatibility

Informasi kompatibilitas database. Maknanya ditentukan oleh implementasi.

Contoh

Jalankan blok anonim berikut untuk menampilkan informasi versi database.

DECLARE
    v_version       VARCHAR2(150);
    v_compat        VARCHAR2(150);
BEGIN
    DBMS_UTILITY.DB_VERSION(v_version,v_compat);
    DBMS_OUTPUT.PUT_LINE('Version: '       || v_version);
    DBMS_OUTPUT.PUT_LINE('Compatibility: ' || v_compat);
END;

Outputnya adalah:

Version: PostgreSQL 11.15 (POLARDB Database Compatible with Oracle 11.15.25)
Compatibility: PostgreSQL 11.15 (POLARDB Database Compatible with Oracle 11.15.25)

EXEC_DDL_STATEMENT

Sintaks

EXEC_DDL_STATEMENT menjalankan pernyataan DDL.

EXEC_DDL_STATEMENT(parse_string VARCHAR2)

Parameter

Parameter

Description

parse_string

Pernyataan DDL yang akan dijalankan.

Contoh

Blok anonim berikut membuat tabel job.

BEGIN
    DBMS_UTILITY.EXEC_DDL_STATEMENT(
        'CREATE TABLE job (' ||
          'jobno NUMBER(3),' ||
          'jname VARCHAR2(9))'
    );
END;
Catatan

Jika parse_string tidak berisi pernyataan DDL yang valid, PolarDB for PostgreSQL (Compatible with Oracle) melemparkan error:

EXEC dbms_utility.exec_ddl_statement('select rownum from dual');
ERROR:  'parse_string' must be a valid DDL statement

Perilaku PolarDB for PostgreSQL (Compatible with Oracle) berbeda dari Oracle, yang menerima parse_string yang tidak valid tanpa melemparkan error.

FORMAT_CALL_STACK

Sintaks

Fungsi FORMAT_CALL_STACK mengembalikan tumpukan panggilan saat ini sebagai teks terformat.

DBMS_UTILITY.FORMAT_CALL_STACK return TEXT

Panggil fungsi ini dari dalam stored procedure, function, atau package untuk mendapatkan tumpukan panggilan saat ini.

FORMAT_ERROR_BACKTRACE

Sintaks

Fungsi FORMAT_ERROR_BACKTRACE mengembalikan tumpukan panggilan terformat dari titik tempat pengecualian dilemparkan.

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE RETURN TEXT

Fungsi ini dirancang untuk digunakan dalam stored procedure, function, atau package.

FORMAT_ERROR_STACK

Sintaks

Fungsi FORMAT_ERROR_STACK mengembalikan tumpukan panggilan pada titik pengecualian sebagai string terformat.

DBMS_UTILITY.FORMAT_ERROR_STACK return TEXT

Anda dapat memanggil fungsi ini dalam stored procedure, function, atau package untuk mengambil tumpukan panggilan.

Catatan

FORMAT_ERROR_STACK berperilaku berbeda di PolarDB for PostgreSQL (Compatible with Oracle) dibandingkan di Oracle. Di Oracle, fungsi ini mengembalikan string yang berisi informasi SQLCODE dan SQLERRM. Di PolarDB for PostgreSQL (Compatible with Oracle), fungsi ini berperilaku sama seperti FORMAT_ERROR_BACKTRACE.

GET_CPU_TIME

Sintaks

Fungsi GET_CPU_TIME mengembalikan waktu CPU saat ini dalam perseratus detik, diukur dari titik waktu arbitrer.

Parameter

Parameter

Description

cputime

Waktu CPU yang telah berlalu dalam perseratus detik.

Contoh

Jalankan pernyataan SELECT berikut untuk mengambil waktu CPU saat ini.

SELECT DBMS_UTILITY.GET_CPU_TIME FROM DUAL;

Pernyataan tersebut mengembalikan hasil serupa berikut, di mana nilai 603 merepresentasikan 603 perseratus detik (6,03 detik).

get_cpu_time
--------------
          603

GET_DEPENDENCY

Sintaks

Gunakan stored procedure GET_DEPENDENCY untuk mencantumkan objek yang bergantung pada objek tertentu. Prosedur ini tidak menampilkan dependensi untuk function atau stored procedure.

GET_DEPENDENCY(type VARCHAR2, schema VARCHAR2,
  name VARCHAR2)

Parameter

Parameter

Description

type

Jenis objek target. Nilai yang valid adalah INDEX, PACKAGE, PACKAGE BODY, SEQUENCE, TABLE, TRIGGER, TYPE, dan VIEW.

schema

Skema objek target.

name

Nama objek target.

Contoh

Jalankan blok anonim berikut untuk menemukan dependensi pada tabel EMP.

BEGIN
    DBMS_UTILITY.GET_DEPENDENCY('TABLE','public','EMP');
END;

Hasilnya adalah sebagai berikut:

DEPENDENCIES ON public.EMP
------------------------------------------------------------------
*TABLE public.EMP()
*   CONSTRAINT c public.emp()
*   CONSTRAINT f public.emp()
*   CONSTRAINT p public.emp()
*   TYPE public.emp()
*   CONSTRAINT c public.emp()
*   CONSTRAINT f public.jobhist()
*   VIEW .empname_view()

GET_HASH_VALUE

Sintaks

Gunakan fungsi GET_HASH_VALUE untuk menghitung nilai hash dari string tertentu.

hash NUMBER GET_HASH_VALUE(name VARCHAR2, base NUMBER,
  hash_size NUMBER)

Parameter

Parameter

Description

name

String yang akan di-hash.

base

Nilai awal untuk pembangkitan hash.

hash_size

Jumlah nilai hash berbeda untuk tabel hash.

hash

Nilai hash yang dihitung.

Contoh

Blok anonim berikut membuat tabel hash menggunakan kolom ename dari tabel emp lalu menampilkan setiap kunci dan nilai hash-nya. Nilai hash dimulai dari 100, dan fungsi menghasilkan hingga 1.024 nilai berbeda.

DECLARE
    v_hash          NUMBER;
    TYPE hash_tab IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
    r_hash          HASH_TAB;
    CURSOR emp_cur IS SELECT ename FROM emp;
BEGIN
    FOR r_emp IN emp_cur LOOP
        r_hash(r_emp.ename) :=
            DBMS_UTILITY.GET_HASH_VALUE(r_emp.ename,100,1024);
    END LOOP;
    FOR r_emp IN emp_cur LOOP
        DBMS_OUTPUT.PUT_LINE(RPAD(r_emp.ename,10) || ' ' ||
            r_hash(r_emp.ename));
    END LOOP;
END;

Berikut adalah contoh outputnya:

SMITH      377
ALLEN      740
WARD       718
JONES      131
MARTIN     176
BLAKE      568
CLARK      621
SCOTT      1097
KING       235
TURNER     850
ADAMS      156
JAMES      942
FORD       775
MILLER     148

GET_PARAMETER_VALUE

Sintaks

Gunakan stored procedure GET_PARAMETER_VALUE untuk mengambil nilai parameter inisialisasi database.

status BINARY_INTEGER GET_PARAMETER_VALUE(parnam VARCHAR2,
  intval OUT INTEGER, strval OUT VARCHAR2)

Parameter

Parameter

Description

parnam

Nama parameter yang nilainya ingin Anda ambil. Parameter-parameter ini tercantum dalam tampilan sistem pg_settings.

intval

Untuk parameter integer atau Boolean, ini adalah nilainya. Untuk parameter string, ini adalah panjang string yang dikembalikan dalam strval.

strval

Nilai parameter string.

status

Mengembalikan 0 jika parameter bertipe INTEGER atau BOOLEAN, atau 1 jika bertipe string.

Contoh

Blok anonim berikut menampilkan nilai parameter inisialisasi.

DECLARE
    v_intval        INTEGER;
    v_strval        VARCHAR2(80);
BEGIN
    DBMS_UTILITY.GET_PARAMETER_VALUE('client_encoding', v_intval, v_strval);
    DBMS_OUTPUT.PUT_LINE('client_encoding' || ': ' || v_strval);
END;

Berikut adalah hasilnya:

client_encoding: UTF8

GET_TIME

Sintaks

Fungsi GET_TIME mengembalikan waktu saat ini dalam perseratus detik.

Parameters

Parameter

Description

time

Jumlah perseratus detik yang telah berlalu sejak program dimulai.

Contoh

Contoh ini memanggil fungsi GET_TIME.

SELECT DBMS_UTILITY.GET_TIME FROM DUAL;

Kueri mengembalikan output berikut:

 get_time
----------
  1555860

NAME_TOKENIZE

Sintaks

Stored procedure NAME_TOKENIZE mengurai nama menjadi komponen-komponennya. Prosedur ini mengonversi komponen yang tidak dikutip menjadi huruf kapital dan menghapus tanda kutip ganda dari komponen yang dikutip.

NAME_TOKENIZE(name VARCHAR2, a OUT VARCHAR2,   b OUT VARCHAR2,c OUT VARCHAR2, dblink OUT VARCHAR2,   nextpos OUT BINARY_INTEGER)

Parameter

Parameter

Description

name

String yang berisi nama dalam format berikut:

a[.b[.c]][@dblink ]

a

Komponen paling kiri.

b

Komponen kedua, jika ada.

c

Komponen ketiga, jika ada.

dblink

Nama tautan basis data, jika ada.

nextpos

Posisi karakter terakhir yang diurai dalam string input.

Contoh

Jalankan pernyataan berikut untuk membuat stored procedure yang menampilkan parameter output dari NAME_TOKENIZE untuk nama-nama berbeda.

CREATE OR REPLACE PROCEDURE name_tokenize (
    p_name          VARCHAR2
)
IS
    v_a             VARCHAR2(30);
    v_b             VARCHAR2(30);
    v_c             VARCHAR2(30);
    v_dblink        VARCHAR2(30);
    v_nextpos       BINARY_INTEGER;
BEGIN
    DBMS_UTILITY.NAME_TOKENIZE(p_name,v_a,v_b,v_c,v_dblink,v_nextpos);
    DBMS_OUTPUT.PUT_LINE('name   : ' || p_name);
    DBMS_OUTPUT.PUT_LINE('a      : ' || v_a);
    DBMS_OUTPUT.PUT_LINE('b      : ' || v_b);
    DBMS_OUTPUT.PUT_LINE('c      : ' || v_c);
    DBMS_OUTPUT.PUT_LINE('dblink : ' || v_dblink);
    DBMS_OUTPUT.PUT_LINE('nextpos: ' || v_nextpos);
END;
  • Nama tunggal tanpa kutip—dikonversi ke kapital: Contoh ini mengurai emp.

    BEGIN
        name_tokenize('emp');
    END;

    Output berikut ditampilkan:

    name   : emp
    a      : EMP
    b      :
    c      :
    dblink :
    nextpos: 3
  • Nama dua bagian tanpa kutip—kedua komponen dikonversi ke kapital: Contoh ini mengurai polardb.list_emp.

    BEGIN
        name_tokenize('polardb.list_emp');
    END;

    Output berikut ditampilkan:

    name   : polardb.list_emp
    a      : polardb
    b      : LIST_EMP
    c      :
    dblink :
    nextpos: 16
  • Nama tiga bagian dengan campuran kutipan—bagian yang dikutip dipertahankan, bagian yang tidak dikutip dikonversi ke kapital: Contoh ini mengurai "polardb"."Emp_Admin".update_emp_sal.

    BEGIN
        name_tokenize('"polardb"."Emp_Admin".update_emp_sal');
    END;

    Output berikut ditampilkan:

    name   : "polardb"."Emp_Admin".update_emp_sal
    a      : polardb
    b      : Emp_Admin
    c      : UPDATE_EMP_SAL
    dblink :
    nextpos: 36
  • Nama dengan tautan basis data: Contoh ini mengurai polardb.emp@polardb_dblink.

    BEGIN
        name_tokenize('polardb.emp@polardb_dblink');
    END;

    Output berikut ditampilkan:

    name   : polardb.emp@polardb_dblink
    a      : polardb
    b      : EMP
    c      :
    dblink : polardb_DBLINK
    nextpos: 26

TABLE_TO_COMMA

Sintaks

Stored procedure TABLE_TO_COMMA mengonversi tabel nama menjadi daftar yang dipisahkan koma. Setiap entri tabel menjadi item daftar. Nama-nama tersebut harus merupakan identifier yang valid.

TABLE_TO_COMMA(tab { LNAME_ARRAY | UNCL_ARRAY },
  tablen OUT BINARY_INTEGER, list OUT VARCHAR2)

Parameter

Parameter

Description

tab

Tabel input berisi nama.

LNAME_ARRAY

Tabel DBMS_UTILITY.LNAME_ARRAY. Untuk informasi lebih lanjut, lihat LNAME_ARRAY.

UNCL_ARRAY

Tabel DBMS_UTILITY.UNCL_ARRAY. Untuk informasi lebih lanjut, lihat UNCL_ARRAY.

tablen

Jumlah entri dalam daftar output.

list

Daftar output yang dipisahkan koma berisi nama dari tab.

Contoh

  1. Jalankan pernyataan berikut untuk membuat stored procedure. Prosedur ini pertama-tama menggunakan COMMA_TO_TABLE untuk mengonversi daftar yang dipisahkan koma menjadi tabel, lalu menggunakan TABLE_TO_COMMA untuk mengonversi tabel kembali menjadi daftar yang dipisahkan koma.

    CREATE OR REPLACE PROCEDURE table_to_comma (
        p_list      VARCHAR2
    )
    IS
        r_lname     DBMS_UTILITY.LNAME_ARRAY;
        v_length    BINARY_INTEGER;
        v_listlen   BINARY_INTEGER;
        v_list      VARCHAR2(80);
    BEGIN
        DBMS_UTILITY.COMMA_TO_TABLE(p_list,v_length,r_lname);
        DBMS_OUTPUT.PUT_LINE('Table Entries');
        DBMS_OUTPUT.PUT_LINE('-------------');
        FOR i IN 1..v_length LOOP
            DBMS_OUTPUT.PUT_LINE(r_lname(i));
        END LOOP;
        DBMS_OUTPUT.PUT_LINE('-------------');
        DBMS_UTILITY.TABLE_TO_COMMA(r_lname,v_listlen,v_list);
        DBMS_OUTPUT.PUT_LINE('Comma-Delimited List: ' || v_list);
    END;
  2. Jalankan stored procedure:

    EXEC table_to_comma('polardb.dept, polardb.emp, polardb.jobhist');

    Prosedur mengembalikan hasil berikut:

    Table Entries
    -------------
    polardb.dept
     polardb.emp
     polardb.jobhist
    -------------
    Comma-Delimited List: polardb.dept, polardb.emp, polardb.jobhist