27 Mart 2017
DBMS_RANDOM.VALUE ile Data Hazırlamak ve Round, Trunc, Mod Fonksiyonları(Number Function)
PL/SQL'de DBMS_RANDOM kullanarak Random Data hazırlama ve Sayı üretmeyi anlatacağım. Bunun için bir Stored Procedure yazacağız.
1) DBMS_RANDOM.VALUE ile Data Oluşturmak
Aşağıdaki örneği anlatmak gerekirse, Kişiler kayıt olduğu HR.MEMBERS tablosu içinde Kimlik numaralarının bulunduğu TCKN kolonuna rastgele 11 haneli Datalar oluşturmamız gerekir. Sorgudaki FOR i IN 1..10 LOOP kısmı kaç Row(Satır) oluşturacağımızı söyler. Ben burada 10 adet Data oluşturdum. TRUNC ile virgülden sonrasını aşağıya yuvarladım, DBMS_RANDOM.VALUE kullanarak 11 haneli sayı değerlerini girdim. Sorguyu çalıştırınca Random 10 adet Datanın üretildiğini göreceksiniz.
BEGIN
FOR i IN 1..10 LOOP
INSERT INTO HR.MEMBERS(TCKN)
VALUES (TRUNC(DBMS_RANDOM.VALUE(10000000000,99999999999)));
COMMIT;
END LOOP;
END;
2) Aşağıdaki sorguda HR.DEPARTMENTS tablosundaki kayıtları rastgele bir sırada sıralar. Sorguyu her çalıştırdığınızda sıralamanın değişeceğini göreceksiniz;
SELECT * FROM HR.DEPARTMENTS ORDER BY DBMS_RANDOM.VALUE
Tablodan rastgele bir kayıt getirmek için;
SELECT * FROM
(SELECT * FROM HR.DEPARTMENTS ORDER BY DBMS_RANDOM.VALUE)
WHERE ROWNUM = 1
3) Round,Trunc ve Mod Fonksiyonları (Number Function)
ROUND: Ondalık(Decimal) değerlerde, seçilen noktadaki sayı 5 ve üzerindeyse bir üst değere yuvarlar, 5 den küçükse bir alt değere yuvarlar. Örnek kullanım;
SELECT ROUND(55.926,2) FROM DUAL
TRUNC: Ondalık(Decimal) değerlerde seçilen noktayı aşağıya yuvarlar. ROUND fonksiyonundan farklı olarak her zaman aşağı yuvarlar. Örnek kullanım;
SELECT TRUNC(55.926,2) FROM DUAL
MOD: Matematikten de bildiğimiz üzere verilen bir değeri belirtilen sayıya bölüp kalan değerini bulur. Burada dikkat edilmesi gereken husus bölüm değilde kalanın sonuç olmasıdır.
SELECT MOD(500, 200) FROM DUAL
Yukarıdaki işlemde 500 bölü 200'den kalan değer 100'dür ve MOD işleminin sonucudur.
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.