Aşağıda resimde görülen şekilde col2 sütununun doldurulması gerekiyor. The output should be as shown picture below.

Aşağıda resimde görülen şekilde col2 sütununun doldurulması gerekiyor. The output should be as shown picture below.

1’den 100’e kadar satır satır data üretmek istediğimizde veya belirli 2 tarih arasında satır satır data üretmek istediğimizde Oracle’ın CONNECT BY LEVEL özelliğini kullanabiliriz. Ben test datası üretmek ve kartezyen join yapacağım zaman bu özelliği kullanıyorum.
SELECT 0 + LEVEL as col1
FROM dual
CONNECT BY LEVEL <= 10
Continue reading 5×5 boş matristen, aşağıdaki datayı üretiniz. 5×5 empty matrix is given. Matrix will be populated according to the screenshot below.

Oracle’ın Built-in fonksiyonu olan Coalesce maalesef çok fazla bilinmiyor. En basit tarif ile “Değer NULL ise yanındaki sağındaki değere bak” söyliyebilirim. Bu fonksiyonu iç içe geçmiş NVL,DECODE yerine kullanılabilir. Bu fonksiyon bilinmediği zaman okunması zor olan kodlar ortaya çıkıyor.
SELECT COALESCE(null,null,’dolu’,null,’dolu2′,null) FROM dual;
Dönen değer: “dolu” olacaktır.
Continue readingOracle’da oluşturulmuş olan bir tablonun veya view’ın sütununun tipi LONG ise bunda doğrudan arama ( where ) yapamayız. Ve şu hata ile karşılaşırız:
ORA-00997: geçersiz LONG veri türü kullanımı
ORA-00997 Illegal use of long datatype
Çözüm:
Continue reading
PL SQL de asal sayıları bulmak için aşağıdaki kodu kullanabilirsiniz.
Kodu kabaca anlatmak gerekirse. 1’den 1000’e kadar olan tüm sayıları üretip with as ile all_numbers’ı oluşturdum.
ALL_NUMBERS’ı cartezyen (cross) join yaptım. Böylece her sayıyı, bölen başka bir sayı var mı diye kontroınl ettim.
1 sayısı her sayıya tam olarak bölündüğü için ve her sayı kendisine tam olarak bölündüğü için bunları küme dışında bıraktım.
2 sayının birbirine bölümü tam sayı ise ( roundlu hali ve roundsuz hali birbirine eşit ise) 0 dedim.
PL-SQL dilinde VARRAY olarak isimlendirilen veri tipi, klasik programlama dillerindeki Array’e denk gelmektedir. Varray tanımlanırken toplam boyutu ve içine atılacak verinin tipi önceden belirlenir. Örneğin : TYPE t_tamsayi IS VARRAY(100) OF NUMBER(10);
Bu kod bize şunu söyler: Maximum 100 elemanlı, number(10) tipinde, t_tamsayı isminde bir array tanımlandı.Sonrasında array’i initialize edip, içine ilgili elemanlar eklenir (add element).
INISorgu sonucu gelen sonuçların BÜYÜK HARFLE, küçük harfle veya İlk Harfleri Büyük şekilde gelmesini istiyorsanız. Aşağıdaki fonksiyonları kullanmalısınız:
BÜYÜK HARF İÇİN : select UPPER(‘tESt Sorgu’) from dual; –sonuç: TEST SORGU
küçük harf için : select LOWER(‘tESt’) from dual; –sonuç: test sorgu
İlk Harfleri Büyük : select INITCAP(‘tESt’) from dual; –sonuç: Test Sorgu
SELECT table_name,column_name,
comments,
UPPER(comments) as COMMENTS_BUYUK_HARF,
LOWER(comments) as comments_kucuk_harf,
INITCAP(comments) as Comments_Ilk_Harf_Buyuk
FROM sys.ALL_COL_COMMENTS
WHERE table_name = 'APEX_TEAM_FEATURES'
and column_name IN ( 'FEATURE_STATUS','FEATURE_DESIRABILITY','WORKSPACE_NAME');
oracle pl sql’de ay başı ay sonu çeyrek başı çeyrek sonu önceki çeyrek önceki çeyrek başı önceki çeyrek son günü v.s. gibi çok kullanılan sql ifadelerini aşağıya ekledim.
Trunc, add_months, last_day, trunc(,”) fonksiyonlarını kullanarak aşağıdaki gibi ilgili tarihleri getirdim.

SELECT sysdate as su_an, --şu an
trunc(sysdate,'Q') as ceyrek_basi, --çeyrek başı
add_months(trunc(sysdate,'Q'),-3) as onceki_ceyrek_basi, --önceki çeyreğin başı
add_months(trunc(sysdate,'Q'),+3) as sonraki_ceyrek_basi, --sonraki çeyreğin başı
add_months(trunc(sysdate,'Q'),+3)-1 as ceyrek_son_gunu, --çeyrek sonu
trunc(sysdate,'Q')-1 as onceki_ceyrek_son_gun --önceki çeyrek son gün
FROM sys.DUAL;
Continue reading Oracle veritabanında bir değerin tek mi çift mi olduğunu anlamak için modüler aritmetik işlemi kullanılır. Oracle’de modüler aritmetik fonksiyonu MOD(x,y)’dur. Birinci parametre (x), ikinci parametre (y)’ye bölünür ve geriye kalan sayı döner. Girilen sayının tek mi çift mi olduğunu anlamak için; sayı 2 ye bölünü kalan 0 ise sayı çifttir, kalan 1 ise sayı tektir kuralı uygulanır. Örnek SQL aşağıdaki gibidir:
SELECT CASE WHEN MOD(1453,2) = 0 THEN 'ÇİFT'
ELSE 'TEK'
END AS tek_cift_sayi_kontrolu
FROM DUAL
1453 tek sayı olduğu için sql’den dönen sonuç TEK olacaktır.
SELECT CASE WHEN MOD(1914,2) = 0 THEN 'EVEN'
ELSE 'ODD'
END AS ODD_EVEN_FLAG
FROM DUAL