Di Oracle Database, CHARTOROWID()
fungsi mengubah nilai string menjadi ROWID
tipe data.
Sintaks
Sintaksnya seperti ini:
CHARTOROWID(char)
Dimana char
adalah salah satu dari CHAR
, VARCHAR2
, NCHAR
, atau NVARCHAR2
tipe data.
Contoh
Berikut ini contoh untuk didemonstrasikan:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Hasil:
AAATiDAAMAAALKzABa
Meskipun ini adalah contoh cepat dan mudah, ini tidak menunjukkan kepada kita bahwa hasil akhirnya adalah tipe ROWID
.
Namun, kita dapat mengetahuinya seperti ini:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Hasil:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Di sini, saya menggunakan DUMP()
berfungsi untuk mendapatkan representasi internal dari lima karakter pertama.
Tapi yang penting, fungsi ini juga mengembalikan ID tipe. Yang pertama adalah 96
, yang merupakan jenis ID untuk CHAR
dan NCHAR
, dan yang kedua adalah 69
, yang merupakan jenis ID untuk ROWID
.
Jadi ini menunjukkan bahwa CHARTOROWID()
fungsi sebenarnya mengubah string menjadi ROWID
.
Contoh Basis Data
Berikut adalah contoh yang mengembalikan baris dalam tabel database, berdasarkan ROWID
yang diberikan :
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Hasil:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
ROWID
tidak valid
Meneruskan ROWID
yang tidak valid menghasilkan kesalahan:
SELECT CHARTOROWID('oops')
FROM DUAL;
Hasil:
Error report - ORA-01410: invalid ROWID
Argumen Null
Jika argumennya null
, hasilnya null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Hasil:
null
Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali nilai nol muncul sebagai akibat dari SELECT
SQL pernyataan.
Namun, Anda dapat menggunakan SET NULL
untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null
harus dikembalikan.
Jumlah Argumen Tidak Valid
Memanggil CHARTOROWID()
tanpa argumen apa pun menghasilkan kesalahan:
SELECT CHARTOROWID()
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Dan meneruskan terlalu banyak argumen juga menghasilkan kesalahan:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Hasil:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"