Oracle PL/SQL

İbrahim Yıldız
3 min readJun 18, 2022

Oracle PL/SQL Yazımla Herkese Merhabalar Baştan Aşağıya PL/SQL’e Dair Her Şeyi Ele Almayı Planlıyorum Hadi Başlayalım..

PL/SQL Nedir ?

Procedural Language/Structured Query Language Yapılandırılmış Sorgu Diline Yönelik Prosedürel Dildir Oracle Veri Tabanı Sistemine Özel Bir Dildir Trigger, Procedurler, If Else Yapısı vs. Yazmak Üzere Geliştirilmiş Bir Dildir Hepsinin Ne Olduğunu Ne işe Yaradığını Örnekler Vererek Anlatacağım

PL/SQL Mimarisi

3 Temel Bileşenden Oluşur

PL/SQL BLOCK

PL/SQL ENGİNE

DATABASE SERVER

PL SQL ENGİNE

PL/SQL Kodlarını ve SQL Kodlarını En Başta Bir Birinden Ayırır

Ayrılan PL/SQL Kodlarını İşler

SQL Kodlarını ise Direkt Veri abanı Sunucusuna Gönderir

DATABASE SERVER

PL /SQL Depolayan, İşleyen Yapıdır

PL/SQL Kodlarını Database Server ‘e Etkileşim Kurmak İçin SQL Kullanır

Blok Yapısı

Declaration Section = Değişkenlerimizi Yazdığımız Kısım

Execution Section = Asıl PL SQL Kodlarımızı Yazdığımız Yer

Exception = Hata Bloklarının Yazıldığı Yer

Veri Türleri Ve Değişkenler

PL SQL İki Tür Veri Tipine Sahiptir Bunlar Skalar ve Bileşik Veri Türüdür Skalar Karakter Sayı Tarih Boolean Gibi Veri Türlerini Tutarken Bileşik ise Birden Fazla Veri Değeri Saklayan Veri Tipidir Record ,Koleksiyon Gibi..

TYPE DEGISKENI

%type Değişkeni Bir Tablodaki Sütunun Veri Tipini Almaya Yarar Into İle Tablodan Aldğımız Alanı Değişkenimize Gönderiyoruz

%rowtype ise tüm tabloyu ele alıyor

IF KULLANIMI

If İse Veri Üzerinde Şart Koşmamızı Sağlan Yapıdır Hemen Örneklendirelim

DONGULER KULLANIMI

Donguler Bir Veri İçersinde Dönmemizi Sağlar

EXIT WHEN / WHILE / FOR ILE SART BELİRLEYİP DÖNEBİLİRİZ

PROCEDUR KULLANIMI

Diğer Adıyla Depolanmış Prosedürler Yazdığınız SQL Komutlarını ,Tablolarınızı Prosedüre Atayarak İstediğiniz Zaman EXECUTE veya EXEC Komutu İle Çağırabilirsiniz

IN = PARAMETRE DISARIYA VERI GONDERMEZ

OUT = PARAMETRE DISARIYA VERI GONDERIR

IN OUT = YUKARIDA Kİ İKİ ÖZELLİĞİDE ALIR

Silmek İçinse DROP PROCEDURE procedure_name

Tüm Procedurleri Listelemek için SELECT * FROM SYS.all_procedures

FONKSIYON KULLANIMI

Procedur Gibi Tablo ,SQL Saklamaya Yarayan Ama Procedur den Çok Daha İşler Yapmaya Yaran İşlemler Blok’u Geriye Her Zaman Değer Döndürmesi Gerekmektedir..

CURSOR KULLANIMI

Diğer Adı İmleçler Gönderdiğimiz Sorguların Gelen Veri Üzerinde Satır Satır İşlem Yapmamıza Olanak Tanıyan Yapı Hemen Örnekler Üzerinden Aydınlatalım

EXCEPTION KULLANIMI

Hata Yönetimidir Komutlarımızın Çıktısında Verilen Hataları İşlemek İçin Kullanılır 2'ye Ayrılır Sistem Tanımlı ve Kullanıcı Tanımlı Olarak

Hemen Örnek Verelim

Eğer Hata Blogu Kullanmasaydık PL/SQL: ORA-00904: “CUSTOMERS_ID”: geçersiz belirleyici
ORA-06550: satır 6, sütun 1: Şeklinde ORA-CODE Ile Başlayan Hata Alırdık

Sistem Tanımlı Bazı Hatalar

KENDİ HATA BLOKLARIMIZI YAZMAK ISTERSEK

TRIGGER KULLANIMI

Diğer Adıyla Tetikçiler Bir İşlem Gerçekleştikten Sonra veya Önce Bir İşlem Yapmaya Yarayan Yapıdır Mesela Ürün Tablosuna Bir Ürün Ekledikten Sonra Stoklar Tablosunda Girilen Ürünün Stok Değerinin Artmasını İstiyorsanız Bunu Tetikleme Yardımıyla Yapabilirsiniz.

PAKET KULLANIMI

Paket Bir Biriyle Alakalı Function , Procedurun Bir Arada Bir Şema Altında Kullanmasıyla Oluşan Yapıdır 2 Bölümden Oluşur Spec ve Body

Spec Kısmında Function , Procedur ..vs Tanımlamaları ve Parameterleri Yazılır Body Kısmında ise Asıl Function , Procedur ..vs Komutları Yazılır ve Yazdığınız İşlemleri Ayrı Ayrı End ile KAPATMANIZ LAZIM

OOP NEDİR VE KULLANIMI

Object Oriented Programming Yani Nesne Yönelimli Programlama Demektir Bir Nesneyi Yazılıma Nasıl Aktarabiliriz İle İlgileniyor Aslında ve Bunları Classlar , Encapsulation Inheritance Polymorphism , Constructer … Yapılarıyla Aktarıyoruz ve Anlamlı Hale Getiriyoruz Oracle PLSQL ile Gerçek Dünyada ki Nesneleri Belirli Veri Yapısına Ve Bunları Çalıştırma Yöntemlerine Sahip Uygulamanıza Olanak Tanır.

Nesneler CREATE OR REPLACE TYPE ile Oluşturulur BODY Kısmında ise Asıl Kodlar Yazılır

Umarım Faydalı Olmuştur Bir Sonraki Yazımda Görüşmek Üzere Beğenmeyi Unutmayın :)

Kaynak

--

--

No responses yet