Tuesday, June 2, 2009

PLS_INTEGER veritipi

PLS_INTEGER veritipi, işaretli tamsayıları depolamak için kullanılır. Sınır değeleri -2^31 ile 2^31 'dir, NUMBER tipine göre bellekte daha az yer kaplar. PLS_INTEGER işlemleri makina aritmetiği kullanır, bu yüzden kütüphane aritmetiği kullanan NUMBER ve BINARY_INTEGER işlemlerinden daha hızlıdır. Verimlilik açısından sınır değerleri arasında kalan hesaplamalarda PLS_INTEGER veritipinin kullanılması daha uygundur.

PLS_INTEGER ve BINARY_INTEGER 'ın sınır değeleri aynı olduğu halde bu iki veritipi tamamen uyumlu değildir. PLS_INTEGER 'da hesaplamada bir taşma (overflow) olursa istisna (exception) verir. Bu taşma BINARY_INTEGER 'da olursa eğer sonuç bir NUMBER değişkenine atanmışsa istisna vermez.

Eski uygulamalarda uyumluluk açısından BINARY_INTEGER kullanılmaya devam edilebilir, yeni uygulamalarda ise PLS_INTEGER veritipinin kullanılması daha iyi bir performans sağlayacaktır.

TAMAMI ALINTIDIR KAYNAK http://alperyilmaz5.blogspot.com/2007/07/plsinteger-veritipi.html



The PLS_INTEGER datatype stores values in the range -2,147,483,647 through 2,147,483,647.

ÖRNEK BİR KULLANIM

SQL> DECLARE
2 lv_counter_num PLS_INTEGER := 0;
3 lv_total_counter_num PLS_INTEGER := 0;
4 BEGIN
5 LOOP
6 lv_counter_num := lv_counter_num + 1;
7 IF lv_counter_num >= 100000 THEN
8 DBMS_OUTPUT.PUT_LINE('Processed 100,000 Records. Total ' ||'Processed ' || lv_total_counter_num);
9 lv_total_counter_num := lv_total_counter_num +
10 lv_counter_num;
11 lv_counter_num := 0;
12 EXIT WHEN lv_total_counter_num >= 1000000;
13 END IF;
14 END LOOP;
15 END;
16 /
Processed 100,000 Records. Total Processed 0
Processed 100,000 Records. Total Processed 100000
Processed 100,000 Records. Total Processed 200000
Processed 100,000 Records. Total Processed 300000
Processed 100,000 Records. Total Processed 400000
Processed 100,000 Records. Total Processed 500000
Processed 100,000 Records. Total Processed 600000
Processed 100,000 Records. Total Processed 700000
Processed 100,000 Records. Total Processed 800000
Processed 100,000 Records. Total Processed 900000

PL/SQL procedure successfully completed.

No comments: