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 |
| Prosedur tersimpan | Tidak tersedia | Menganalisis tabel database. |
| Prosedur tersimpan | Tidak tersedia | Menganalisis tabel yang dipartisi. |
| Prosedur tersimpan | Tidak tersedia | Menganalisis tabel skema. |
| Prosedur tersimpan | Tidak tersedia | Mengkanonisasi string dengan menggunakan metode, seperti menghilangkan spasi. |
| Prosedur tersimpan | Tidak tersedia | Mengonversi daftar nama yang dipisahkan koma menjadi tabel nama. |
| Prosedur tersimpan | Tidak tersedia | Mengambil versi database. |
| Prosedur tersimpan | Tidak tersedia | Menjalankan pernyataan DDL. |
| Fungsi | TEXT | Mengembalikan isi terformat dari tumpukan panggilan saat ini. |
| Fungsi | TEXT | Mengembalikan isi terformat dari tumpukan panggilan untuk mana kesalahan dilemparkan. |
| Fungsi | TEXT | Mengembalikan isi terformat dari tumpukan panggilan untuk mana kesalahan dilemparkan. |
| Fungsi | NUMBER | Mengambil waktu CPU saat ini. |
| Prosedur tersimpan | Tidak tersedia | Mengambil objek yang bergantung pada objek yang ditentukan. |
| Fungsi | NUMBER | Menghitung nilai hash. |
| Prosedur tersimpan | BINARY_INTEGER | Mengambil pengaturan parameter inisialisasi database. |
| Fungsi | NUMBER | Mengembalikan waktu saat ini. |
| Prosedur tersimpan | Tidak tersedia | Mengurai nama yang ditentukan ke dalam komponen-komponennya. |
| 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.
CatatanMetode 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
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;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
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;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;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 validBerbeda 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 TEXTFungsi 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 TEXTFungsi 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 TEXTFungsi ini dapat digunakan dalam prosedur tersimpan, fungsi, atau paket untuk mengembalikan tumpukan panggilan saat terjadi kesalahan dalam format yang mudah dibaca.
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
--------------
603GET_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 148GET_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: UTF8GET_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
----------
1555860NAME_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 | 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: 3Tokenize 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: 16Tokenize 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: 36Tokenize 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
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;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