Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

CHARTOROWID() Fungsi di Oracle

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"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalasi Oracle 12c gagal mengakses lokasi sementara

  2. Bagaimana cara melewatkan parameter boolean ke prosedur Oracle C #

  3. Apa topeng pemformatan tanggal Oracle untuk zona waktu?

  4. Apakah ada cara untuk menginstal Java di Oracle 11g XE?

  5. Kode untuk memanggil fungsi dalam paket dari C# dan ODP.NET