全部产品
Search
文档中心

PolarDB:DBMS_UTILITY

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan paket DBMS_UTILITY.

Paket DBMS_UTILITY mencakup prosedur tersimpan dan fungsi berikut.

Fungsi atau prosedur tersimpan

Kategori

Tipe nilai kembali

Deskripsi

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

Prosedur tersimpan

Tidak tersedia

Menganalisis tabel database.

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

Prosedur tersimpan

Tidak tersedia

Menganalisis tabel yang dipartisi.

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

Prosedur tersimpan

Tidak tersedia

Menganalisis tabel skema.

CANONICALIZE(name, canon_name OUT, canon_len)

Prosedur tersimpan

Tidak tersedia

Mengkanonisasi string dengan menggunakan metode, seperti menghilangkan spasi.

COMMA_TO_TABLE(list, tablen OUT, tab OUT)

Prosedur tersimpan

Tidak tersedia

Mengonversi daftar nama yang dipisahkan koma menjadi tabel nama.

DB_VERSION(version OUT, compatibility OUT)

Prosedur tersimpan

Tidak tersedia

Mengambil versi database.

EXEC_DDL_STATEMENT(parse_string)

Prosedur tersimpan

Tidak tersedia

Menjalankan pernyataan DDL.

FORMAT_CALL_STACK

Fungsi

TEXT

Mengembalikan isi terformat dari tumpukan panggilan saat ini.

FORMAT_ERROR_STACK

Fungsi

TEXT

Mengembalikan isi terformat dari tumpukan panggilan untuk mana kesalahan dilemparkan.

FORMAT_ERROR_BACKTRACE

Fungsi

TEXT

Mengembalikan isi terformat dari tumpukan panggilan untuk mana kesalahan dilemparkan.

GET_CPU_TIME

Fungsi

NUMBER

Mengambil waktu CPU saat ini.

GET_DEPENDENCY(type, schema, name)

Prosedur tersimpan

Tidak tersedia

Mengambil objek yang bergantung pada objek yang ditentukan.

GET_HASH_VALUE(name, base, hash_size)

Fungsi

NUMBER

Menghitung nilai hash.

GET_PARAMETER_VALUE(parnam, intval OUT, strval OUT)

Prosedur tersimpan

BINARY_INTEGER

Mengambil pengaturan parameter inisialisasi database.

GET_TIME

Fungsi

NUMBER

Mengembalikan waktu saat ini.

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

Prosedur tersimpan

Tidak tersedia

Mengurai nama yang ditentukan ke dalam komponen-komponennya.

TABLE_TO_COMMA(tab, tablen OUT, list OUT)

Prosedur tersimpan

Tidak tersedia

Mengonversi tabel nama menjadi daftar nama yang dipisahkan koma.

Berbeda dengan database Oracle yang mendukung semua fungsi dan prosedur tersimpan dalam paket DBMS_UTILITY, PolarDB for PostgreSQL (Kompatibel dengan Oracle) hanya mendukung fungsi dan prosedur tersimpan yang terdaftar dalam tabel sebelumnya.

Tabel berikut mencantumkan variabel publik yang tersedia dalam paket DBMS_UTILITY.

Variabel publik

Tipe data

Nilai

Deskripsi

inv_error_on_restrictions

PLS_INTEGER

1

Digunakan oleh prosedur tersimpan INVALIDATE.

lname_array

TABLE

-

Menyusun daftar nama panjang.

uncl_array

TABLE

-

Menyusun daftar pengguna dan nama.

Variabel

LNAME_ARRAY

Variabel LNAME_ARRAY digunakan untuk menyimpan daftar nama panjang, termasuk nama yang memenuhi syarat sepenuhnya.

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

UNCL_ARRAY

Variabel UNCL_ARRAY digunakan untuk menyimpan daftar pengguna dan nama.

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

Penggunaan

ANALYZE_DATABASE, ANALYZE SCHEMA, dan ANALYZE PART_OBJECT

Prosedur tersimpan ANALYZE_DATABASE(), ANALYZE_SCHEMA(), dan ANALYZE_PART_OBJECT() digunakan untuk mengumpulkan statistik pada tabel dalam database. Saat Anda mengeksekusi pernyataan ANALYZE, Postgres mengambil sampel data dalam tabel dan mencatat statistik distribusi di tabel sistem pg_statistics.

ANALYZE_DATABASE, ANALYZE_SCHEMA, dan ANALYZE_PART_OBJECT berbeda dalam jumlah tabel yang diproses:

  • 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

Perintah ANALYZE memiliki sintaks 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 ]]]])

Parameters

  • ANALYZE_DATABASE dan ANALYZE_SCHEMA

    Parameter

    Deskripsi

    method

    Parameter method menentukan apakah prosedur tersimpan ANALYZE mengisi tabel pg_statistics atau menghapus entri dari tabel pg_statistics.

    • Jika Anda menentukan metode DELETE, prosedur tersimpan ANALYZE akan menghapus baris relevan dari pg_statistics.

    • Jika Anda menentukan metode COMPUTE atau ESTIMATE, prosedur tersimpan ANALYZE akan menganalisis satu atau lebih tabel dan mencatat informasi distribusi di pg_statistics.

      Catatan

      Metode COMPUTE dan ESTIMATE identik. Kedua metode tersebut mengeksekusi pernyataan ANALYZE Postgres. Semua parameter lainnya divalidasi lalu diabaikan.

    estimate_rows

    Jumlah baris tempat statistik perkiraan didasarkan. Salah satu dari estimate_rows atau estimate_percent harus ditentukan jika metode ESTIMATE ditentukan.

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

    estimate_percent

    Persentase baris tempat statistik perkiraan didasarkan. Salah satu dari estimate_rows atau estimate_percent harus ditentukan jika metode ESTIMATE ditentukan.

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

    method_opt

    Tipe objek yang akan dianalisis. Kombinasi berikut didukung:

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

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

  • ANALYZE_PART_OBJECT

    Parameter

    Deskripsi

    schema

    Nama skema yang objeknya dianalisis.

    object_name

    Nama objek partisi yang akan dianalisis.

    object_type

    Tipe objek yang akan dianalisis. Nilai valid: T: tabel, I: indeks.

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

    command_type

    Tipe fungsi analisis yang akan dijalankan. Nilai valid:

    • E: mengumpulkan statistik perkiraan berdasarkan jumlah baris tertentu atau persentase baris dalam klausa sample_clause.

    • C: menghitung statistik tepat.

    • V: memvalidasi struktur dan integritas partisi.

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

    command_opt

    Jika command_type disetel ke C atau E, kombinasi berikut didukung:

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

    Jika command_type disetel ke V dan object_type disetel ke T, CASCADE didukung.

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

    sample_clause

    Jika command_type disetel ke E, klausa berikut disertakan untuk menentukan jumlah baris atau persentase baris tempat statistik perkiraan didasarkan:

    SAMPLE n { ROWS | PERCENT }

    Parameter ini diabaikan, tetapi disertakan untuk kompatibilitas.

CANONICALIZE

Prosedur tersimpan CANONICALIZE mendukung fitur berikut untuk mengelola string input:

  • Jika string tidak diapit tanda kutip ganda, verifikasi bahwa string menggunakan karakter pengenal yang valid. Jika tidak, pengecualian dilemparkan. Jika string diapit tanda kutip ganda, semua karakter diizinkan.

  • Jika string tidak diapit tanda kutip ganda dan tidak mengandung titik, huruf besarkan semua karakter alfabet dan hilangkan spasi awal dan akhir.

  • Jika string diapit tanda kutip ganda dan tidak mengandung titik, hapus tanda kutip ganda.

  • Jika string mengandung titik dan tidak ada bagian dari string yang diapit tanda kutip ganda, huruf besarkan setiap bagian dari string dan apit setiap bagian dengan tanda kutip ganda.

  • Jika string mengandung titik dan bagian dari string diapit tanda kutip ganda, kembalikan bagian yang diapit tanda kutip ganda tanpa perubahan termasuk tanda kutip ganda dan kembalikan bagian yang tidak diapit tanda kutip ganda sebagai huruf besar dan diapit tanda kutip ganda.

Sintaks

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

Parameters

Parameter

Deskripsi

name

String yang akan dikanonisasi.

canon_name

String yang telah dikanonisasi.

canon_len

Jumlah byte dalam nama yang akan dikanonisasi mulai dari karakter pertama.

Contoh

  1. Buat prosedur tersimpan CANONICALIZE untuk menganonisasi string input.

    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. Eksekusi prosedur tersimpan CANONICALIZE.

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

    Hasil contoh:

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

COMMA_TO_TABLE

Sintaks

Prosedur tersimpan COMMA_TO_TABLE mengonversi daftar nama yang dipisahkan koma menjadi tabel nama. Setiap entri dalam daftar diubah menjadi entri tabel. Nama-nama tersebut harus diformat sebagai pengenal yang valid.

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

Parameters

Parameter

Deskripsi

list

Daftar nama yang dipisahkan koma dari parameter tab.

tablen

Jumlah entri dalam daftar.

tab

Tabel yang berisi nama-nama yang terdaftar.

LNAME_ARRAY

DBMS_UTILITY LNAME_ARRAY. Untuk informasi lebih lanjut, lihat LNAME_ARRAY.

UNCL_ARRAY

DBMS_UTILITY UNCL_ARRAY. Untuk informasi lebih lanjut, lihat UNCL_ARRAY.

Contoh

  1. Buat prosedur tersimpan COMMA_TO_TABLE untuk mengonversi daftar nama yang dipisahkan koma menjadi tabel nama.

    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. Eksekusi prosedur tersimpan COMMA_TO_TABLE.

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

    Hasil contoh:

    polardb.dept
     polardb.emp
     polardb.jobhist

DB_VERSION

Sintaks

Prosedur tersimpan DB_VERSION mengembalikan nomor versi database.

DB_VERSION(version OUT VARCHAR2, compatibility OUT VARCHAR2)

Parameters

Parameter

Deskripsi

version

Versi mesin dari instance.

compatibility

Kompatibilitas database. Artinya ditentukan oleh implementasi.

Contoh

Eksekusi blok anonim berikut untuk menampilkan 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;

Hasil contoh:

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

Prosedur tersimpan EXEC_DDL_STATEMENT digunakan untuk mengeksekusi pernyataan DDL.

EXEC_DDL_STATEMENT(parse_string VARCHAR2)

Parameters

Parameter

Deskripsi

parse_string

Pernyataan DDL yang akan dieksekusi.

Contoh

Eksekusi blok anonim berikut untuk membuat pekerjaan.

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

Jika parse_string tidak mencakup pernyataan DDL yang valid, pesan kesalahan berikut dikembalikan di cluster PolarDB for PostgreSQL (Kompatibel dengan Oracle):

EXEC dbms_utility.exec_ddl_statement('select rownum from dual');
ERROR:  'parse_string' harus berupa pernyataan DDL yang valid

Berbeda dengan cluster PolarDB for PostgreSQL (Kompatibel dengan Oracle), database Oracle menerima parse_string yang tidak valid tanpa menghasilkan kesalahan.

FORMAT_CALL_STACK

Sintaks

Fungsi FORMAT_CALL_STACK mengembalikan isi tumpukan panggilan saat ini dalam format terstruktur.

DBMS_UTILITY.FORMAT_CALL_STACK return TEXT

Fungsi ini dapat digunakan dalam prosedur tersimpan, fungsi, atau paket untuk menghasilkan tumpukan panggilan saat ini dalam format yang mudah dibaca.

FORMAT_ERROR_BACKTRACE

Sintaks

Fungsi FORMAT_ERROR_BACKTRACE mengembalikan isi terformat dari tumpukan panggilan saat kesalahan dilemparkan.

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE return TEXT

Fungsi ini dapat digunakan dalam prosedur tersimpan, fungsi, atau paket untuk mengembalikan tumpukan panggilan saat terjadi kesalahan dalam format yang mudah dibaca.

FORMAT_ERROR_STACK

Sintaks

Fungsi FORMAT_ERROR_STACK mengembalikan isi tumpukan panggilan yang diformat saat kesalahan dilemparkan.

DBMS_UTILITY.FORMAT_ERROR_STACK return TEXT

Fungsi ini dapat digunakan dalam prosedur tersimpan, fungsi, atau paket untuk mengembalikan tumpukan panggilan saat terjadi kesalahan dalam format yang mudah dibaca.

Catatan

PolarDB for PostgreSQL (Kompatibel dengan Oracle) cluster menggunakan fungsi FORMAT_ERROR_STACK secara berbeda dibandingkan dengan database Oracle. Pada database Oracle, string yang dikembalikan oleh fungsi FORMAT_ERROR_STACK mencakup informasi SQLCODE dan SQLERRM. Di cluster PolarDB for PostgreSQL (Kompatibel dengan Oracle), fungsi FORMAT_ERROR_STACK memiliki perilaku yang sama dengan fungsi FORMAT_ERROR_BACKTRACE.

GET_CPU_TIME

Sintaks

Fungsi GET_CPU_TIME mengembalikan waktu CPU dalam ratusan detik dari titik waktu tertentu yang sewenang-wenang.

Parameters

Parameter

Deskripsi

cputime

Jumlah ratusan detik dari waktu CPU.

Contoh

Eksekusi pernyataan berikut untuk mendapatkan waktu CPU dalam ratusan detik.

SELECT DBMS_UTILITY.GET_CPU_TIME FROM DUAL;

Hasil berikut dikembalikan, yaitu 6,03 ratusan detik atau 0,0603 detik.

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

GET_DEPENDENCY

Sintaks

Prosedur tersimpan GET_DEPENDENCY digunakan untuk mencantumkan objek-objek yang bergantung pada objek yang ditentukan. GET_DEPENDENCY tidak menunjukkan dependensi untuk fungsi atau prosedur tersimpan.

GET_DEPENDENCY(type VARCHAR2, schema VARCHAR2,
  name VARCHAR2)

Parameters

Parameter

Deskripsi

type

Tipe objek nama. Nilai valid: INDEX, PACKAGE, PACKAGE BODY, SEQUENCE, TABLE, TRIGGER, TYPE, dan VIEW.

schema

Nama skema tempat objek nama tersebut ada.

name

Nama objek tempat dependensi akan diambil.

Contoh

Eksekusi blok anonim berikut untuk mengambil dependensi tabel EMP.

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

Hasil contoh:

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

Fungsi GET_HASH_VALUE menghitung nilai hash.

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

Parameters

Parameter

Deskripsi

name

String tempat nilai hash dihitung.

base

Nilai mulai dari mana nilai hash dihasilkan.

hash_size

Jumlah maksimum nilai hash.

hash

Nilai-nilai hash.

Contoh

Eksekusi blok anonim berikut untuk membuat tabel nilai hash yang berisi maksimal 1024 nilai hash mulai dari 100 berdasarkan kolom ename dari tabel emp.

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;

Hasil contoh:

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

Prosedur tersimpan GET_PARAMETER_VALUE digunakan untuk mengambil pengaturan parameter inisialisasi database.

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

Parameters

Parameter

Deskripsi

parnam

Nama parameter yang nilainya dikembalikan. Parameter-parameter tersebut dicantumkan dalam tampilan sistem pg_settings.

intval

Nilai parameter integer atau panjang parameter strval.

strval

Nilai parameter string.

status

Mengembalikan 0 jika nilai parameter adalah INTEGER atau BOOLEAN. Mengembalikan 1 jika nilai parameter adalah string.

Contoh

Eksekusi blok anonim berikut untuk 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;

Hasil contoh:

client_encoding: UTF8

GET_TIME

Sintaks

Fungsi GET_TIME digunakan untuk mengembalikan waktu saat ini dalam ratusan detik.

Parameters

Parameter

Deskripsi

time

Jumlah ratusan detik yang telah berlalu sejak program dimulai.

Contoh

Contoh berikut menunjukkan pemanggilan fungsi GET_TIME.

SELECT DBMS_UTILITY.GET_TIME FROM DUAL;

Hasil contoh:

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

NAME_TOKENIZE

Sintaks

Prosedur tersimpan NAME_TOKENIZE mengurai nama menjadi komponen-komponennya. Nama yang tidak diapit tanda kutip ganda akan diubah menjadi huruf besar. Tanda kutip ganda dihilangkan dari nama yang memiliki tanda kutip ganda.

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

Parameters

Parameter

Deskripsi

name

String yang berisi nama dalam format berikut:

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

a

Mengembalikan komponen paling kiri.

b

Mengembalikan komponen kedua jika komponen tersebut ada.

c

Mengembalikan komponen ketiga jika komponen tersebut ada.

dblink

Mengembalikan nama tautan database.

nextpos

Posisi karakter terakhir yang diuraikan dalam nama.

Contoh

Buat prosedur tersimpan NAME_TOKENIZE untuk mengurai nama yang berbeda ke dalam komponen-komponennya.

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;
  • Tokenize parameter name yang disetel ke emp:

    BEGIN
        name_tokenize('emp');
    END;

    Hasil contoh:

    name   : emp
    a      : EMP
    b      :
    c      :
    dblink :
    nextpos: 3
  • Tokenize parameter name yang disetel ke edb.list_emp:

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

    Hasil contoh:

    name   : polardb.list_emp
    a      : polardb
    b      : LIST_EMP
    c      :
    dblink :
    nextpos: 16
  • Tokenize parameter name yang disetel ke "polardb"."Emp_Admin".update_emp_sal:

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

    Hasil contoh:

    name   : "polardb"."Emp_Admin".update_emp_sal
    a      : polardb
    b      : Emp_Admin
    c      : UPDATE_EMP_SAL
    dblink :
    nextpos: 36
  • Tokenize parameter name yang disetel ke polardb.emp @ polardb_dblink:

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

    Hasil contoh:

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

TABLE_TO_COMMA

Sintaks

Prosedur tersimpan TABLE_TO_COMMA mengonversi tabel nama menjadi daftar nama yang dipisahkan koma. Setiap entri tabel diubah menjadi entri daftar. Nama-nama tersebut harus diformat sebagai pengenal yang valid.

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

Parameters

Parameter

Deskripsi

tab

Tabel yang berisi nama-nama.

LNAME_ARRAY

DBMS_UTILITY LNAME_ARRAY. Untuk informasi lebih lanjut, lihat LNAME_ARRAY.

UNCL_ARRAY

DBMS_UTILITY UNCL_ARRAY. Untuk informasi lebih lanjut, lihat UNCL_ARRAY.

tablen

Jumlah entri dalam daftar.

list

Daftar nama yang dipisahkan koma yang ditentukan oleh parameter tab.

Contoh

  1. Buat prosedur tersimpan COMMA_TO_TABLE untuk mengonversi daftar yang dipisahkan koma menjadi tabel, lalu buat prosedur tersimpan 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('Entri Tabel');
        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('Daftar Dipisahkan Koma: ' || v_list);
    END;
  2. Eksekusi prosedur tersimpan COMMA_TO_TABLE.

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

    Hasil contoh:

    Entri Tabel
    -------------
    polardb.dept
     polardb.emp
     polardb.jobhist
    -------------
    Daftar Dipisahkan Koma: polardb.dept, polardb.emp, polardb.jobhist