türkçe sorgulama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
türkçe sorgulama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Aralık 2008 Perşembe

Oracle' da Türkçe karakter ile sorgulama

Upper fonksiyonu default olarak i harfini I (büyük ı ) harfine dönüştürüyor.
Doğru çalıştırabilmek için NLS_SORT parametresini XTURKISH olarak set etmek
ve upper yerine nls_upper kullanmak gerekiyor.


SQL> alter session set NLS_SORT = 'XTURKISH' ;

SQL> select nls_upper ( 'i' ) from dual;

--Session bazında set etmeden ve herhangi bir ayar yapmadan sorgulamak için bu şekilde de kullanabiliriz.

SELECT sysdate
FROM dual
WHERE nls_upper ( 'i' , 'NLS_SORT = XTURKISH' ) = 'İ' ;


NLS_SORT parametresi client üzerinde veya yukarıdaki gibi session bazında set edilebilir.
Diğer bir yöntem database için logon trigger oluşturmak olabilir.

--database için örnek trigger

CREATE OR REPLACE TRIGGER NLS_LOGON
AFTER LOGON
ON DATABASE
DECLARE
sqlstr VARCHAR2(200) := 'alter session set NLS_SORT=XTURKISH';
BEGIN
IF (USER = 'DENEMEUSER') THEN
execute immediate sqlstr;
END IF;
END nls_logon;
/

--user için örnek trigger

CREATE OR REPLACE TRIGGER user_logon_nls
AFTER LOGON ON scott.schema
BEGIN
DECLARE
sqlstr VARCHAR2(200) := 'alter session set NLS_SORT=XTURKISH';
BEGIN
IF (USER = 'DENEMEUSER') THEN
execute immediate sqlstr;
END IF;
END;
/