Veritabanı sorgulamalarının büyük küçük harfe duyarsız şekilde yapılması (case insensitive)
Varsayılan olarak büyük küçük harfe duyarlı (case sensitive) olduğundan aşağıdaki gibi bir sorguda , dönen sonuç içerisinde küçük harfe başlayanlar gelmeyecektir. Bu durumda dönen sonuç eksik veri içermiş olacaktır.
select * from kisi where ad like 'A%' ;
Büyük ya da küçük harfle sorgulama yapıldığında hem büyük hem küçük harf içermesi isteniyorsa , NLS_COMP=LINGUISTIC ve NLS_SORT=BINARY_AI olacak şekilde değiştirilmelidir.
Tüm kullanıcılar için geçerli olması istenirse , parametre olarak değiştirilebilir. Belirli bazı kullanıcılar için örneğin uygulama kullanıcısı için geçerli olsun denildiğinde , database logon trigger yazılarak bu işlem yapılabilir.
Parametre değişimi :
SQL> alter system set NLS_COMP=LINGUISTIC scope=spfile sid='*'; SQL> alter system set NLS_SORT=BINARY_AI scope=spfile sid='*';
Sonrasında veritabanı yeniden başlatılmalıdır.
Sadece bir kullanıcı için geçerli olsun istenirse , session seviyesinde aşağıdaki gibi logon trigger ile , sadece ilgili kullanıcı giriş yaptığında , session boyunca geçerli hale getirilebilir.
Database logon trigger ile yapılması :
CREATE OR REPLACE TRIGGER SYS.CASE_INSENSITIVE_TRIGGER AFTER LOGON ON DATABASE BEGIN if (sys_context('USERENV', 'SESSION_USER') in ('USER1','USER2')) then EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP=LINGUISTIC'; EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT=BINARY_AI'; end if; END case_insensitive_trigger; /