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;
/
select nls_upper ( 'i' ) from dual;
YanıtlaSilN
-
İ
SQL> update personel set ad = nls_upper(ad), soyad = nls_upper(soyad);
Çok sağ olun
YanıtlaSil