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

NAME_IN built-in di Oracle D2k Forms

NAME_IN bawaan di Oracle D2k Forms

Deskripsi
Mengembalikan nilai dari variabel yang ditunjukkan.
Nilai yang dikembalikan berupa string karakter. Namun, Anda dapat menggunakan NAME_IN untuk mengembalikan
angka dan tanggal sebagai string karakter dan kemudian mengonversi string tersebut ke tipe data yang sesuai. Anda
dapat menggunakan nilai yang dikembalikan sebagaimana Anda akan menggunakan nilai apa pun dalam pernyataan yang dapat dieksekusi.
Jika Anda menyarangkan fungsi NAME_IN, Pembuat Formulir mengevaluasi masing-masing fungsi NAME_IN dari
yang paling dalam hingga yang paling luar satu.
Sintaks
FUNCTION NAME_IN
(variable_name VARCHAR2);
Built-in Type fungsi tak terbatas
Mengembalikan VARCHAR2
Masuk ke Mode Kueri ya
Parameter
nama_variabel Menentukan variabel atau item teks yang valid. Tipe data dari namanya adalah
VARCHAR2.
Catatan Penggunaan
Jika nilai yang dikembalikan adalah string tanggal, NAME_IN akan menggunakan format mask yang ditentukan dalam properti
BUILTIN_DATE_FORMAT. Jika properti DATE_FORMAT_COMPATIBILITY_MODE
disetel ke 4,5, format Amerika default digunakan untuk memformat string yang dikembalikan.
Contoh NAME_IN
/*
** Built-in:NAME_IN
** Contoh:Implementasi sederhana dari mekanisme stack Last-In-First-Out
** menggunakan variabel Global.
** Untuk setiap tumpukan bernama, variabel global
** GLOBAL._PTR menunjuk ke elemen
** terbesar di tumpukan. PUSH menambah nilai
** ini saat elemen baru ditambahkan. Nilai
** yang DIPUSH atau di-POP dari tumpukan bernama
** sebenarnya disimpan dalam variabel GLOBAL dari a
** nama yang mudah dibentuk:GLOBAL.nnn
** di mana 'nnn' adalah jumlah elemen pada tumpukan
**.
**
** Penggunaan:
** Push('MYSTACKNAME' , '1');
** Push('MYSTACKNAME', '2');
**
** str_var :=Pop('MYSTACKNAME'); -- Mendapat '2'
** str_var :=Pop('MYSTACKNAME'); -- Mendapat '1'
** str_var :=Pop('MYSTACKNAME'); -- Mendapat 'EOS'
**
*/
PROCEDURE Push ( the_stackname VARCHAR2,
the_value VARCHAR2 ) IS
ptr_name VARCHAR2(40); -- Nama penunjuk tumpukan ini
awalan VARCHAR2(40); -- Awalan umum untuk penyimpanan vars
elt_name VARCHAR2(40); -- Nama elemen penyimpanan
new_idx VARCHAR2(4); -- Nilai penunjuk tumpukan baru
BEGIN
/*
** Untuk sembarang tumpukan bernama yang kami rujuk, variabel global
** digunakan untuk menyimpan nilai tumpukan dan
** pointer stack semuanya dimulai dengan awalan umum:
** GLOBAL.
*/
prefix :='GLOBAL.' || the_stackname;
/*
** Penunjuk stack bernama ini berada di
** GLOBAL._PTR Ingat bahwa ini adalah *name*
** dari pointer.
*/
ptr_name :=awalan || '_PTR';
/*
** Inisialisasi penunjuk tumpukan dengan nilai default
** nol jika penunjuk tumpukan tidak ada sebelumnya, yaitu
** GLOBAL ._PTR belum dibuat.
*/
Default_Value( '0', ptr_name );
/*
** Karena kita PUSH'ing a elemen baru di tumpukan,
** naikkan penunjuk tumpukan untuk mencerminkan posisi elemen
** baru ini. Ingat bahwa variabel GLOBAL
** selalu bertipe VARCHAR2, jadi kita harus mengonversinya TO_NUMBER
** sebelum melakukan perhitungan.
*/
new_idx :=TO_CHAR( TO_NUMBER( Name_In ( ptr_name ) ) + 1 );
Copy( new_idx , ptr_name );
/*
** Tentukan nama variabel global yang akan
** menyimpan nilai yang dilewatkan di, GLOBAL..
** Ini hanyalah awalan yang digabungkan ke indeks baru
** nomor yang baru saja kita hitung di atas.
*/
elt_name :=awalan||new_idx;
Copy( the_value , elt_name );
END;
FUNCTION Pop ( the_stackname VARCHAR2)
RETURN VARCHAR2 IS
ptr_name VARCHAR2(40); -- Nama penunjuk tumpukan ini
awalan VARCHAR2(40); -- Awalan umum untuk penyimpanan vars
elt_name VARCHAR2(40); -- Nama elemen penyimpanan
new_idx VARCHAR2(4); -- Nilai penunjuk tumpukan baru
cur_idx VARCHAR2(4); -- Nilai penunjuk tumpukan saat ini
the_val VARCHAR2(255);
EMPTY_STACK CONSTANT VARCHAR2(3) :='EOS';
NO_SUCH_STACK CONSTANT VARCHAR2(3) :='NSS';
BEGIN
/*
** Untuk setiap tumpukan bernama yang kami referensikan, variabel global
** yang digunakan untuk menyimpan nilai tumpukan dan
** penunjuk tumpukan semuanya dimulai dengan awalan umum:
** GLOBAL.
*/
awalan :='GLOBAL.' || the_stackname;
/*
** Penunjuk stack bernama ini berada di
** GLOBAL._PTR Ingat bahwa ini adalah *name*
** dari pointer.
*/
ptr_name :=awalan || '_PTR';
/*
** Paksa nilai default NULL sehingga kami dapat menguji apakah pointer
** ada (sebagai variabel global). Jika tidak
** ada, kita dapat menguji NULL sebentar lagi, dan menghindari
** kesalahan umum karena merujuk variabel global
** yang tidak ada.
*/
Default_Value( NULL, ptr_name );
/*
** Jika *nilai* yang terkandung dalam pointer adalah NULL, maka
** pointer tidak boleh telah ada sebelum
** pernyataan Default_Value di atas. Kembalikan konstanta
** NO_SUCH_STACK dalam kasus ini dan hapus variabel global
** yang dibuat secara implisit oleh Default_Value.
*/
IF Name_In( ptr_name ) IS NULL THEN
the_val :=NO_SUCH_STACK;
Erase( ptr_name );
/*
** Jika tidak, tumpukan bernama sudah ada. Dapatkan
** indeks elemen tumpukan terbesar dari penunjuk
** tumpukan ini.
*/
ELSE
cur_idx :=Name_In( ptr_name );
/*
** Jika indeksnya nol, maka tumpukan bernama sudah
** kosong, jadi kembalikan konstanta EMPTY_STACK, dan tinggalkan
** penunjuk tumpukan untuk nanti gunakan, yaitu jangan
** HAPUS.
**
** Perhatikan bahwa tumpukan hanya dapat kosong jika beberapa nilai
** telah DIPUSH dan maka semua nilai selanjutnya
** POP'ed. Jika tidak ada nilai yang pernah DIPUSH pada tumpukan bernama
** ini, maka tidak ada penunjuk tumpukan terkait yang
** telah dibuat, dan kami akan menandai kesalahan itu dengan
** NO_SUCH_STACK kasus di atas.
*/
IF cur_idx ='0' THEN
the_val :=EMPTY_STACK;
/*
** Jika indeks bukan nol, maka :
** (1) Tentukan nama variabel global di
** tempat nilai yang akan di-POP disimpan,
** GLOBAL.
** (2) Dapatkan nilai elemen (cur_idx)-th ke
** return
** (3) Kurangi penunjuk tumpukan
** (4) Hapus variabel global yang digunakan untuk
** penyimpanan nilai
*/
ELSE
elt_name:=awalan || cur_idx;
the_val :=Name_In( elt_name );
new_idx :=TO_CHAR( TO_NUMBER( Name_In(ptr_name) ) - 1 );
Copy( new_idx , ptr_name );
Hapus ( elt_name );
END IF;
END IF;
RETURN the_val;
END;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan saat mengonversi XML dari kolom CLOB ke kolom XMLType

  2. Urutan eksekusi kondisi dalam klausa 'di mana' SQL

  3. Apakah mungkin menggunakan pengembalian dalam prosedur tersimpan?

  4. SQL Oracle Menghitung Cluster

  5. Kata kunci Oracle 'Partition By' dan 'Row_Number'