Kategori arşivi: veri madenciliği

NLS_UPPER & NLS_LOWER


Oracleda büyük ve küçük harf çevirimlerinde her zaman UPPER ve LOWER fonksiyonlarını kullanarak istediğimiz sonuç alamayabiliriz. Özellikle ulusal dillerde olan özel karakterlerde UPPER ve LOWER fonksiyonları istenen sonuçları vermez. Örneğin;

SELECT UPPER (‘i’)   FROM DUAL;

U

I
1 row selected.

SELECT LOWER(‘I’)   FROM DUAL;

L

i
1 row selected.

ilk sorguyu çalıştırdığımızda dönen sonucun İ olmasını bekler bize I olarak döner.  İkinci sorguda yine benzer şekilde ı dönmesini beklerken oracle bize i olarak geri dönüş verir. Bu gibi durumlarda dönüşümleri oracle yerel karaktersetine göre yapmaktadır. Yerel karaktersete özgü büyük ve küçük harf dönüşümleri için NLS_UPPER ve NLS_LOWER fonksiyonlarını kullanmalıyız.  NLS_UPPER ve NLS_LOWER kullanımında ise dönüşüm yapılacak dili NLS_SORT ile belirtiriz.

SELECT NLS_UPPER (‘i’, ‘NLS_SORT =xturkish’) FROM DUAL;
N

I
1 row selected.

SELECT NLS_LOWER (‘I’, ‘NLS_SORT =xturkish’) FROM DUAL;

N

ı
1 row selected.

Reklamlar

DDL, DML, DCL ve TCL


Data Definition Language ( DDL ) : Tablolara veri girme, var olan veriyi güncelleme ve veri silme işlemleri için kullanılan komutları içerir.
  • CREATE : Veritabanında yeni nesnelerinin oluşturulması için kullanılır.
  • ALTER : Varolan veritabanında nesnelerinin değiştirilmesi için kullanılır.
  • DROP :  Varolan veritabanı nesnelerinin veritabanından kaldırılması için kullanılır.
  • TRUNCATE : Veritabanında bir tablonun içerisindeki tüm kayıtların silinmesi için kullanılır.
  • RENAME :  Veritabanında bir nesnenin isminin değiştirilmesi için kullanılır.
Data Manipulation Language ( DML ) : Tablo, Kullanıcı gibi nesneleri yaratmak için kullanılan komutları içerir.
  • SELECT :  Veritabanından veri çekmek, listelemek, göstermek için kullanılır.
  • INSERT : Tablo içerisine veri eklemek için kullanılır.
  • UPDATE : Tablo içerisindeki veriyi güncellemek için kullanılır.
  • DELETE : Tablodaki verilerin silinmesi için kullanılır.
  • MERGE – UPSERT : Operasyonunun yapılması için kullanılır (insert etmek, eğer insert hata alırsa update etmek işlemi).
  • CALL : Bir PL/SQL veya Java programının çalıştırılması için kullanılır.
  • LOCK TABLE : Kontrol altında tutma işlemleri için kullanılır.
Data Control Language ( DCL ) : Kullanıcılara çeşitli yetkiler verme, yetkileri geri alma gibi işlemleri gerçekleştirmek için kullanılan komutları içerir.
  • GRANT : Kullanıcıya veritabanı üzerinde yetki tanımlama için kullanılır.
  • DENY: Kullanıcı, grup veya rolü bir eylem için engellemek için kullanılır (Oracle için geçerli değildir. MS SQL Server de geçerlidir).
  • REVOKE : Kullancıya verilen yetkilerin iptal edilmesi için kullanılır.

Transactional Control Language ( TCL ) : Transaction yapılan işlemlerin belirli kontroller içinde sürdürülmesini sağlayan komutlardır. Böylece veri kaybına ve işlem karışıklığına karşı önlem alınır.

  • COMMIT : işlem bittiğinde yapılan değişikliklerin veritabanında geçerli olması için kullanılır.
  • SAVEPOINT : daha sonra rollbak yapılmak üzere bir nokta belirlenmesinde kullanılır.
  • ROLLBACK : veritabanını en son commit edilen hale getirmek için yapılan işlemlerin iptal edilmesi için kullanılır.
  • SET TRANSACTION : Transaction ayarlarının değiştirilmesi, rollback segmentlerinin belirlenmesi gibi işlemlerde kullanılır.

Rowtype kullanımı


Merhabalar, bu yazımda oracle rowtype kullanımı üzerine bilgilerimizi tazelemek istedim. Rowtype bize fonksiyon ve prosedürlerle çok esneklik sağlayan bir referans tip alma yöntemidir. Her hangi bir fonkisyon yada prosedür bir tablo üzerinde kolon veri tipini tekrar tanımlamak yerine o tablonun kolonunun veri tipini referans göstererek de yapabiliriz. Örneğin herhangi bir fonksiyon yada prosedürde muşteri nosu isimli bir değişken tanımlaması yapmak istiyorsak,

mus_no musteri.musteri_no%rowtype;

Yukarıdaki şekilde tanımlayarak kullanacağımız tablodaki tipi referans alırız. Bu durumda referans tablo olan musteri tablosunda musteri_no kolonun tipi değişkene atanacaktır.  Bu şekilde kullanıma gitmemizin nedeni ise üzerinde çalışılacak tablonun kolonun güncellenmesi sonrasında, güncelenen kolonu kullanan fonksiyon ve prosedürler de güncellemeden kurtulmaktadır. Referans verilen fonksiyon ve prosedürlerin içinde declare ile tanımlanmış değişkenler tipi referansından alacağı için sorun olmayacaktır.