sysdate sistem tarihini getiren bir fonksiyondur .
dbms_output.put_line———-< prosedurdur. Fonksiyon bir değer döndürür. (SELECT) Fonksiyonun içinde genelde select li işler yapılır. Takım id sini ister , girilen takım id sinin ismini döndürür. Örnek türkçe tarih dönder ; create or replace function ; (view da da c. or r. ) düşürülürse haklar gidiyor . bu yüzden create or replace tercih ediliyor haklar gitmiyor, kot değişmiş oluyor)
1 |
create or replace function turkce_tarih_getir return varchar2 is tarih varchar2 (15); |
1 |
begin select to_char(sysdate, 'DD/MM/YYYY') into tarih from dual; return tarih; end; |
Toad’da editorden “run as script” ile de çalıştırılabilir.
1 |
select turkce_tarih_getir from dual; --------> ile sonuç görülebilir. |
Bir fonksiyon her tablo üzerinde çalışır, ama o tablodaki satır sayısı kadar sonuç dönderir.
1 |
select turkce_tarih_getir from emp; |
Dual den tek sonuç döner. Alternatif olarak tek_satir diye bir tablo oluşturulup bu tabloya tek satırlık giriş yapılır bu şekilde de tek dönüş yaptırılabilir. Sysdate in yerine alternatif bir fonksiyon oluşturmuş olduk.
Örnek büyük harfe çevir;
1 2 3 4 5 6 7 8 9 10 |
create or replace function buyuk_harfe_cevir (p_kelime varchar2) return varchar2 is buyuk_kelime varchar2(100); begin buyuk_kelime := upper(p_kelime); return upper(p_kelime); end; select buyuk_harfe_cevir('mehmet') from dual; select first_name, buyuk_harfe_cevir(first_name) from emp; --fn lerin yanına bir kolon ekleyip büyük hallerini getirir. select buyuk_harfe_cevir(first_name) from emp ; --fn leri büyük harfe çevirir. first_name üzerine bir fonksiyon uygulanıyor. |
1 2 |
create public synonym bhc for buyuk_harfe_cevir; hr kulanıcısının hakkı olmayabilir. grant create public synonym to hr; create synonym bhc for buyuk_harfe_cevir; bu yüzden sadece kendisi için oluşturur. ya da hak verilir. |
Fonksiyonun kullanıldığı yerler : takım adı getir, ben id yi yolliyim o takım adı göndersin gibi
1 2 3 4 5 6 7 8 9 10 11 12 |
create or replace function dept_adi_getir(p_deptno number) return varchar2 is dept_name varchar2(30); begin select department_name into dept_name from departments where department_id = p_deptno; return dept_name; exception when others then return SQLERRM; end; |
1 2 |
select dept_adi_getir (100) from dual; select dept_adi_getir (108) from dual; --exception koyduğumuz için veri olmadıgında hata donecektir. |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
create or replace function dept_adi_getir(p_deptno number) return varchar2 is dept_name varchar2(30); begin select department_name into dept_name from departments where department_id = p_deptno; return dept_name; exception when no_data_found then return p_deptno || ' numaralı takım yok ' ; end; "108 numaralı takım yok " şeklinde dönüş yapar. |
Sistem veri dosyasının...
13 Mart 2019