21.08.2009

Sequence değerini değiştirmek.

Oracle'da sequence'lerin değerini, increment değeri ile oynayarak değiştirmek mümkündür. sqx_test adında bir sequence oluşturup 1 olan sıra numarasını 500 olarak değiştiriyoruz.


SQL> create sequence sqx_test;

Sequence created

SQL> select sqx_test.nextval from dual;

NEXTVAL
----------
1

SQL> alter sequence sqx_test increment by 499;

Sequence altered

SQL> select sqx_test.currval from dual;

CURRVAL
----------
1

SQL> select sqx_test.nextval from dual;

NEXTVAL
----------
500

SQL> alter sequence sqx_test increment by 1;

Sequence altered
SQL>

11.08.2009

Excel'de sayı sistemleri...

Excel'de 32 lik sayı sisteminden 10'luk sayı sistemine çevirmek için aşağıdaki fonksiyon kullanılabilir :

Türkçe Excel:

=EĞER(A1="";"0";TOPLA.ÇARPIM( KUVVET(32;UZUNLUK(A1) - SATIR( DOLAYLI("1:"&UZUNLUK(A1))));(KOD(BÜYÜKHARF(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))) -48*(KOD(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))<58) -55*(KOD(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1))>64))))


İngilizce Excel:

=IF(A1="","0",SUMPRODUCT( POWER(32,LEN(A1) - ROW(INDIRECT("1:"&LEN(A1)))),
(CODE(UPPER(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))) - 48*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<58) - 55*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>64))))

20.07.2009

asp.net'te web.config'ten parametre okumak

asp.net ile uygulama geliştirirken, uygulamanın parametrik olmasını isteyebilirsiniz. Bunun için web.config dosyasında appSettings alanı içerisine ihtiyaç duyduğunuz parametreleri şu şekilde tanımlamalısınız :


<appSettings>
<add key="username" value="kullaniciadi" />
<add key="password" value="pass" />
</appSettings>

program içerisinden bu değerleri okumak için :

Username = ConfigurationSettings.AppSettings["username"];
Password = ConfigurationSettings.AppSettings["password"];

10.07.2009

Delphi ile web servis'e parametre gönderim problemi

ASP.NET (VS 2005) ile oluşturulmuş bir web servisine parametre gönderemedim. Parametresiz olarak çağırıldığında problem yok, parametre ile çağrıldığında, parametre değeri olarak null gidiyor.

Delphi ile oluşturulan kod içerisine initialization altına:


InvRegistry.RegisterInvokeOptions(TypeInfo(SoapAdi), ioDocument);


satırını ekleyince problem çözüldü.

6.02.2009

firebird'de sayıları yazıya çeviren procedure

Bir zamanlar yazmış olduğum, firebird veritabanı üzerinde sayıları yazıya çeviren procedure.

Kullanım:

SELECT p.TUTARYAZI FROM YAZIYLA(111023.03) p

TUTARYAZI
---------
YÜZONBİRBİNYİRMİÜÇ YTL ÜÇ YKR



Kaynak kodları...


SET TERM ^ ;
CREATE PROCEDURE BASAMAKYAZI (
BASAMAK Integer,
RAKAM Integer )
RETURNS (
YAZI Varchar(20) )
AS
BEGIN
YAZI= case basamak
when 1 then
case rakam
when 1 then 'BİR'
when 2 then 'İKİ'
when 3 then 'ÜÇ'
when 4 then 'DÖRT'
when 5 then 'BEŞ'
when 6 then 'ALTI'
when 7 then 'YEDİ'
when 8 then 'SEKİZ'
when 9 then 'DOKUZ'
end
when 2 then
case rakam
when 1 then 'ON'
when 2 then 'YİRMİ'
when 3 then 'OTUZ'
when 4 then 'KIRK'
when 5 then 'ELLİ'
when 6 then 'ALTMIŞ'
when 7 then 'YETMİŞ'
when 8 then 'SEKSEN'
when 9 then 'DOKSAN'
end
when 3 then
case rakam
when 1 then 'YÜZ'
when 2 then 'İKİYÜZ'
when 3 then 'ÜÇYÜZ'
when 4 then 'DÖRTYÜZ'
when 5 then 'BEŞYÜZ'
when 6 then 'ALTIYÜZ'
when 7 then 'YEDİYÜZ'
when 8 then 'SEKİZYÜZ'
when 9 then 'DOKUZYÜZ'
end
end;
SUSPEND;
END^
SET TERM ; ^








SET TERM ^ ;
CREATE PROCEDURE YAZIYLA (
TUTAR Numeric(18,2) )
RETURNS (
TUTARYAZI Varchar(300) )
AS
DECLARE VARIABLE tutarstr VARCHAR(50);
DECLARE VARIABLE yazi VARCHAR(50);
DECLARE VARIABLE len integer;
DECLARE VARIABLE tamsayistr VARCHAR(50);
DECLARE VARIABLE tamsayiuz integer;
DECLARE VARIABLE kesirstr VARCHAR(2);
DECLARE VARIABLE i integer;
DECLARE VARIABLE rakam integer;
DECLARE VARIABLE basamak integer;
DECLARE VARIABLE uclubasamak integer;
BEGIN

tutarstr=tutar;
len = 0;
TUTARYAZI = '';
len= CHAR_LENGTH(tutarstr);

IF (len = 0) THEN
BEGIN
TUTARYAZI = 'SIFIR';
END
tamsayiuz = len-3;
tamsayistr = SUBSTRING(tutarstr FROM 1 FOR tamsayiuz);
kesirstr = SUBSTRING(tutarstr FROM len-1 FOR 2);

i = 1;
uclubasamak = tamsayiuz;
WHILE (uclubasamak>3) DO BEGIN
uclubasamak = uclubasamak-3;
END



-- Tam kısmı
WHILE (i<=tamsayiuz) DO
BEGIN
rakam = SUBSTRING(tamsayistr FROM i FOR 1);
basamak = tamsayiuz-i+1;

IF ((tamsayiuz=1) AND rakam=0) THEN TUTARYAZI = 'SIFIR';


IF (( rakam>0 ) and (not ( tamsayiuz = 4 and basamak = 4 and uclubasamak = 1 ))) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(:uclubasamak,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI = TUTARYAZI || TRIM(YAZI);
END

IF ((BASAMAK=4) AND (TUTARYAZI not like '%MİLYON' and TUTARYAZI not like '%MİLYAR')) THEN TUTARYAZI = TUTARYAZI||'BİN' ;
IF ((BASAMAK=7) AND ( TUTARYAZI not like '%MİLYAR' )) THEN TUTARYAZI = TUTARYAZI || 'MİLYON';
IF (BASAMAK=10) THEN TUTARYAZI = TUTARYAZI || 'MİLYAR';

i = i + 1;
uclubasamak = uclubasamak - 1;
IF (uclubasamak = 0) THEN uclubasamak = 3;
END
TUTARYAZI = TUTARYAZI||' YTL ';

-- Kuruş Kısmı
IF (CAST (kesirstr AS INTEGER)>0) THEN
BEGIN
rakam = SUBSTRING(kesirstr FROM 1 FOR 1);
IF ( rakam > 0 ) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(2,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI= TUTARYAZI||TRIM(YAZI);
END

rakam = SUBSTRING(kesirstr FROM 2 FOR 1);
IF ( rakam > 0 ) THEN
BEGIN
EXECUTE PROCEDURE BASAMAKYAZI(1,:rakam) RETURNING_VALUES :YAZI;
TUTARYAZI= TUTARYAZI||TRIM(YAZI);
END
TUTARYAZI= TUTARYAZI||' YKR';
END

SUSPEND;
END^
SET TERM ; ^

5.02.2009

oracle substr fonksiyonu

SUBSTR (string, başlangıç [, uzunluk ])
Fonksiyonu string içerisinden başlangıç karakterinden uzunluk kadar olan kısmı alır.


SQL> select Substr('Zeki Güven',6,5) from dual;

SUBSTR('ZEKIGÜVEN',6,5)
--------------------------------
Güven

Eğer uzunluk belirtilmezse, string'in başlangıç olarak belirtilen pozisyondan başlıyarak, string'in tamamını alır.


SQL> select Substr('Zeki Güven',6) from dual;

SUBSTR('ZEKIGÜVEN',6)
--------------------------------
Güven


başlangıç pozisyonu pozitif bir sayı olursa string'in başından, negatif bir sayı olursa string'in son tarafından başlar.


SQL> select Substr('Zeki Güven',3) from dual;

SUBSTR('ZEKIGÜVEN',3)
--------------------------------
ki Güven

SQL> select Substr('Zeki Güven',-3) from dual;

SUBSTR('ZEKIGÜVEN',-3)
--------------------------------
ven

SQL> select Substr('Zeki Güven',-10,4) from dual;

SUBSTR('ZEKIGÜVEN',-10,4)
--------------------------------
Zeki

31.01.2009

oracle replace fonksiyonu

REPLACE(string, aranacak_string [, değiştirilecek_string ] ) fonksiyonu string parametresi içerisinde aranacak_string arayıp, değiştirilecek_string ile değiştirir. Bütük küçük harf ayırımını dikkate alır. değiştirilecek_string belitilmezse aranacak_string, string içinden kaldırır.


SQL> select Replace('Zeki Güven','Z','C') from dual;

REPLACE('ZEKIGÜVEN','Z','C')
---------------------------------------------------
Ceki Güven

SQL> select Replace('Zeki Güven','z','C') from dual;

REPLACE('ZEKIGÜVEN','Z','C')
---------------------------------------------------
Zeki Güven

SQL> select Replace('Zeki Güven','e','x') from dual;

REPLACE('ZEKIGÜVEN','E','X')
---------------------------------------------------
Zxki Güvxn

SQL> select Replace('Zeki Güven','e',null) from dual;

REPLACE('ZEKIGÜVEN','E',NULL)
--------------------------------
Zki Güvn

SQL> select Replace('Zeki Güven','e') from dual;

REPLACE('ZEKIGÜVEN','E')
--------------------------------
Zki Güvn

28.01.2009

oracle rtrim fonksiyonu

RTRIM(string[, çıkartılacak karakter ]) fonksiyonu çıkartılacak karakter belirtilmediği takdirde string'in sonundaki ' ' (boşluk) karakterlerini kaldırır. Boşluk karakteri yerine başka bir karakter'in kaldırılması istenirse çıkartılacak karakter parametresi ile belirtilir.


SQL> select RTrim('Zeki Güven ') from dual;

RTRIM('ZEKIGÜVEN
--------------------------------
Zeki Güven

SQL> select RTrim('Zeki Güven*************','*') from dual;

RTRIM('ZEKIGÜVEN*************
--------------------------------
Zeki Güven

oracle ltrim fonksiyonu

LTRIM(string[, çıkartılacak karakter ]) fonksiyonu çıkartılacak karakter belirtilmediği takdirde string'in başındaki ' ' (boşluk) karakterlerini kaldırır. Boşluk karakteri yerine başka bir karakter'in kaldırılması istenirse çıkartılacak karakter parametresi ile belirtilir.


SQL> select LTrim(' Zeki Güven') from dual;

LTRIM('ZEKIGÜVEN
--------------------------------
Zeki Güven

SQL> select LTrim('*************Zeki Güven','*') from dual;

LTRIM('*************ZEKIGÜVEN
--------------------------------
Zeki Güven

27.01.2009

oracle trim fonksiyonu


TRIM([ { { LEADING | TRAILING | BOTH }
         [ çıkartılacak karakter ]
       | çıkartılacak karakter
       }
       FROM
     ]
     string
    )

TRIM fonksiyonu tek parametre ile kullanıldığında string'in başındaki ve sonundaki ' ' (boşluk) karakterlerini çıkartır.


SQL> select Trim(' Zeki Güven ') from dual;

TRIM('ZEKIGÜVEN')
--------------------------------
Zeki Güven


Boşluk karakterinden farklı bir karakter çıkartmak için FROM kullanılır.


SQL> select Trim('-' from '----Zeki Güven----') from dual;

TRIM('-'FROM'----ZEKIGÜVEN---
--------------------------------
Zeki Güven


Sadece string1'in başındaki karakterlerin çıkartılması için LEADING, sonundaki karakterlerin çıkartılması için TRAILING. Hem başındaki hem sonundaki karakterlerin çıkartılması için BOTH kullanılır.


SQL> select Trim(leading '-' from '----Zeki Güven----') from dual;

TRIM(LEADING'-'FROM'----ZEKIG
--------------------------------
Zeki Güven----

SQL> select Trim(trailing '-' from '----Zeki Güven----') from dual;

TRIM(TRAILING'-'FROM'----ZEKI
--------------------------------
----Zeki Güven

SQL> select Trim(both '-' from '----Zeki Güven----') from dual;

TRIM(BOTH'-'FROM'----ZEKIGÜVE
--------------------------------
Zeki Güven


LEADING , TRAILING , BOTH anahtar keimelerinden biri kullanılmazsa BOTH kullanılmış gibi sonuç üretilir


SQL> select Trim('-' from '----Zeki Güven----') from dual;

TRIM('-'FROM'----ZEKIGÜVEN---
--------------------------------
Zeki Güven

25.01.2009

oracle upper fonksiyonu

UPPER(string) fonksiyonu, parametre olarak verilen string değerini büyük harfe çevirir.


SQL> select Upper('Zeki Güven') from dual;

UPPER('ZEKIGÜVEN')
--------------------------------
ZEKİ GÜVEN

SQL> select Upper('zeki güven') from dual;

UPPER('ZEKİGÜVEN')
--------------------------------
ZEKİ GÜVEN

24.01.2009

oracle rpad fonksiyonu

RPAD (string1,uzunluk [,string2])
string1 değerinin sağ tarafına, toplam uzunluğu parametre ile belirtilen uzunluğa eşit olana kadar string2'den ekler.
string2 belirtilmezse ' ' (boşluk) karakteri kullanılır.
Eğer string1'in uzunluğu uzunluk parametresinden büyükse, büyük olan kısım string1'den kesilir.


SQL> select RPAD('Zeki Güven',20,'*') from dual;

RPAD('ZEKIGÜVEN',20,'*')
------------------------------------------------
Zeki Güven**********

SQL> select RPAD('Zeki Güven',20,'.:') from dual;

RPAD('ZEKIGÜVEN',20,'.:')
------------------------------------------------
Zeki Güven.:.:.:.:.:

SQL> select RPAD('Zeki Güven',5,'.:') from dual;

RPAD('ZEKIGÜVEN',5,'.:')
------------------------------------------------
Zeki

oracle lpad fonksiyonu

LPAD (string1,uzunluk [,string2])
string1 değerinin sol tarafına, toplam uzunluğu parametre ile belirtilen uzunluğa eşit olana kadar string2'den ekler.
string2 belirtilmezse ' ' (boşluk) karakteri kullanılır.
Eğer string1'in uzunluğu uzunluk parametresinden büyükse, büyük olan kısım string1'den kesilir.


SQL> select LPAD('Zeki Güven',20,'*') from dual;

LPAD('ZEKIGÜVEN',20,'*')
------------------------------------------------
**********Zeki Güven

SQL> select LPAD('Zeki Güven',20,'.:') from dual;

LPAD('ZEKIGÜVEN',20,'.:')
------------------------------------------------
.:.:.:.:.:Zeki Güven

SQL> select LPAD('Zeki Güven',5,'.:') from dual;

LPAD('ZEKIGÜVEN',5,'.:')
------------------------------------------------
Zeki

oracle lower fonksiyonu

LOWER(string) fonksiyonu, parametre olarak verilen string değerini küçük harfe çevirir.


SQL> select Lower('Zeki Güven') from dual;

LOWER('ZEKIGÜVEN')
--------------------------------
zeki güven

SQL> select Lower('ZEKİ GÜVEN') from dual;

LOWER('ZEKİGÜVEN')
--------------------------------
zeki güven

oracle initcap fonksiyonu

INITCAP(string) fonksiyonu, parametre olarak verilen string değerinin her kelimesinin ilk harfini büyük harfe çevirir. Diğer harfleride küçük harfe çevirir.


SQL> select InitCap('zeki güven') from dual;

INITCAP('ZEKIGÜVEN')
--------------------------------
Zeki Güven

SQL> select InitCap('ZEKİ GÜVEN') from dual;

INITCAP('ZEKİGÜVEN')
--------------------------------
Zeki Güven

22.01.2009

oracle concat fonksiyonu

CONCAT( string1, string2 ) fonksiyonu string1 ile string2'yi birleştirerek döndürür.Dönen değerin karakter seti string1'e ait karakter setidir.
Birleştirme operatörü (||) bu fonksiyonla aynı işlevi görür.


SQL> select Concat('Zeki','Güven') from dual;

CONCAT('ZEKI','GÜVEN')
-----------------------------
ZekiGüven

SQL> select Concat('Sayı :',15) from dual;

CONCAT('SAYI:',15)
-----------------------------
Sayı :15

SQL> select 'Zeki'||'Güven' from dual;

'ZEKI'||'GÜVEN'
-----------------------------
ZekiGüven

SQL> select 'Sayı :'||15 from dual;

'SAYI:'||15
-----------------------------
Sayı :15

SQL> select ' Test '||null from dual;

'TEST'||NULL
--------------------------------
Test

21.01.2009

oracle chr fonksiyonu

CHR(sayi) fonksiyonu sayı olarak verilen değerin karşılığı karakteri döndürür.


SQL> select CHR(65) from dual;

C
-
A

CHR(13)=> Enter karakteri (CR)

20.01.2009

oracle length fonksiyonu

LENGTH (string) fonksiyonu paremetre olarak verilen string'in karakter uzunluğunu döndürür.
Parametre olarak verilen değer null ise dönen değerde null olur. string '' (boş string) ise null olarak işlem görür.


SQL> select Length('Zeki Güven') from dual;

LENGTH('ZEKIGüVEN')
-------------------
10

SQL> select Length(10) from dual;

LENGTH(10)
----------
2

SQL> select Length(sysdate) from dual;

LENGTH(SYSDATE)
---------------
10

SQL> select Length(null) from dual;

LENGTH(NULL)
------------

SQL> select Length('') from dual;

LENGTH('')
----------

SQL> Select nvl('','NULL ise çalışır') from dual;

NVL('','NULLISEÇALIŞIR')
--------------------------------
NULL ise çalışır

SQL> select Length('X') from dual;

LENGTH('X')
-----------
1

19.01.2009

oracle'da guid oluşturma.

Oracle'da guid oluşturmak için sys_guid() fonksiyonu kullanılır.

SQL> select sys_guid() from dual;
SYS_GUID()
--------------------------------
60D26D88D648D798E040000A630056E8


C#'ta kullanılan formata dönüştürmek için;

select REGEXP_REPLACE( LOWER(SYS_GUID()),
'(.{8})(.{4})(.{4})(.{4})(.{12})', '\1-\2-\3-\4-\5') from dual;