2013-10-25 35 views
7

PL/SQL fark nedir:PLSQL: VARBIABLE: = SEQUENCE.NEXTVAL veya SELECT SEQUENCE.NEXTVAL, çiftten DEĞİŞKENLİ'ye mi?

CREATE OR REPLACE FUNCTION WBAR_TEST_1 RETURN NUMBER IS 
    LN_TMP NUMBER; 
BEGIN 
    LN_TMP := SOME_SEQUENCE.NEXTVAL; 
    RETURN LN_TMP; 
END WBAR_TEST_1; 

ve

CREATE OR REPLACE FUNCTION WBAR_TEST_2 RETURN NUMBER IS 
    LN_TMP NUMBER; 
BEGIN 
    SELECT SOME_SEQUENCE.NEXTVAL INTO LN_TMP FROM DUAL; 
    RETURN LN_TMP; 
END WBAR_TEST_2; 

Ben ikinci yaklaşım geçmişi amaçlıdır sadece olduğunu düşünüyorum.

cevap

11

Birincisi, Oracle 11g ile kullanıma sunuldu, bundan önce SELECT seq_name.nextVal FROM dual'a vardı. Fark ne? Eh, ilk görüşüme göre daha kolay okunur. Dahası, Tim Hall kendi sitesinde, belgelere göre ilk (yeni) yaklaşımın performansı artırabileceğini yazdı. Bazı testler yaptı, ancak fark marjinaldi. Tim Hall'un sitesinde Devamı

: hiçbir fark olmamalıdır aslında böylece diğer taraftan Sequences and NEXTVAL in PL/SQL

, burada About using NEXTVAL in PL/SQL - Oracle 11g belirtildiği gibi, nextVal değerini getiriliyor yatan uygulanması, değişmedi.