İnsanların bu tabloya atıfta bulunduğunu duydum ve ne hakkında olduğundan emin değildi.
Verilerle ne zaman ilgilenmediğinizi seçmek için kullanılan tek bir kayda sahip, bir kukla tablo türüdür, bunun yerine bazı sistem işlevlerinin sonuçlarının bir select ifadesinde olmasını istersiniz:
örneğin. select sysdate from dual;
İçinde bir element bulunan sahte bir masa. Kullanışlı çünkü Oracle gibi ifadelere izin vermiyor
SELECT 3+4
Bu kısıtlamayı çözerek yazabilirsiniz.
SELECT 3+4 FROM DUAL
yerine.
Tarih
DUAL tablosu, iç görünümlere katılmak için bir tablo sağlamak üzere Oracle şirketinin Chuck Weiss tarafından oluşturuldu:
DUAL tablosunu Oracle Veri Sözlüğü'nde temel bir nesne olarak oluşturdum. Asla kendisi görülmek istemedi, ancak sorgulanması beklenen bir görünümde kullanıldı. Buradaki fikir, DUAL tablosuna JOIN yapıp tablonuzdaki her satır için sonuçta iki satır oluşturabilmenizdi. Daha sonra, GROUP BY kullanarak, ortaya çıkan birleşme, DATA kapsamı ve INDEX kapsamı (ları) için depolama miktarını göstermek üzere özetlenebilir. DUAL adı, yalnızca birinden bir çift satır oluşturma işlemi için uygun görünüyordu. 1
Yukarıdan anlaşılamayabilir, ancak orijinal DUAL tablosunda iki satır vardı (dolayısıyla adı). Günümüzde sadece bir satır var.
Optimizasyon
DUAL başlangıçta bir tablodu ve veritabanı motoru, DUAL seçimini yaparken masaya IO diskini uygulardı. Bu disk IO genellikle mantıklıydı IO (fiziksel disk erişimi içermiyordu) çünkü disk blokları genellikle bellekte önbelleğe alındı. Bu, DUAL tablosuna karşı büyük miktarda mantıksal IO sonucunu verdi.
Oracle veritabanının sonraki sürümleri optimize edildi ve DUAL tablosu hala mevcut olsa bile, veritabanı artık DUAL tablosunda fiziksel veya mantıksal IO işlevini gerçekleştirmiyor.
Bu wikipedia makalesinin netleşmesine yardımcı olabileceğini düşünüyorum.
http://en.wikipedia.org/wiki/DUAL_table
DUAL tablosu, tüm Oracle veritabanı kurulumlarında varsayılan olarak mevcut olan özel bir tek tablodur. SYSDATE veya KULLANICI gibi bir sahte sütun seçmede kullanım için uygundur. Tablo, "X" değerine sahip olan DUMMY adlı tek bir VARCHAR2 (1) sütununa sahiptir.
Oracle'daki özel masa. Bunu hesaplamalar veya sistem değişkenlerini kontrol etmek için sıklıkla kullanırım. Örneğin:
Select 2*4 from dual
hesaplamanın sonucunu yazdırırSelect sysdate from dual
, sunucunun geçerli tarihini yazdırır.Oracle'da yalnızca 1 satır ve 1 sütun içeren bir yardımcı program tablosu. Birkaç aritmetik işlemi gerçekleştirmek için kullanılır ve genellikle bilinen bir çıktı üretmek için ihtiyaç duyulan yerlerde kullanılabilir.
SELECT * from FROM;
"DUMMY" adlı tek bir sütuna ve burada gösterildiği gibi "X" değerine sahip tek bir satır verir:
DUMMY ----- X
Komutlarını çalıştırabileceğiniz ve sysdate gibi sonuçları geri alabileceğiniz bir tür sahte tablo. Ayrıca Oracle'ın çalışıp çalışmadığını ve sql sözdizimini vb. Kontrol etmenize yardımcı olur.
DUAL hakkında daha fazla gerçek ....
http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Burada yapılan heyecan verici deneyler ve Tom'un daha heyecan verici açıklamaları
DUAL tablosu, tüm Oracle veritabanı kurulumlarında varsayılan olarak mevcut olan özel bir tek tablodur. SYSDATE veya KULLANICI gibi bir sahte sütun seçmede kullanım için uygundur
Tabloda "X" değeri olan DUMMY adlı tek bir VARCHAR2 (1) sütunu var.
Bununla ilgili her şeyi http://en.wikipedia.org/wiki/DUAL_table adresinde okuyabilirsiniz.
DUAL, yalnızca SQL’de kullanılabilen işlevleri kullanmak için PL/SQL geliştirmede gereklidir.
örneğin.
DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
DUAL, çoğunlukla dizilerden bir sonraki sayıyı almak için kullanılır.
Sözdizimi: SELECT 'dizilim_adı'. DUALDEN NEXTVAL
Bu, bir satır bir sütun değeri döndürecektir (NEXTVAL sütun adı).
Bu geri dönüş 1 boş satırına koymak için bir nesnedir. Örneğin: ikiliden 1'i seçin; 1 döndürür
ikiliden 21 + 44'ü seçin; 65 döndürür
dual'den [dizilim]. diziden bir sonraki değeri döndürür.
select ... from dual
gerektiren bir başka durum, yerleşik DBMS_METADATA.GET_DDL
işlevini kullanarak farklı veritabanı nesneleri için (TABLE, FUNCTION, TRIGGER, PACKAGE gibi) kodu almak istediğimizde ortaya çıkar:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
günümüzde IDE'lerin bir tablonun DDL'sini görüntüleme imkanı sundukları doğrudur, ancak SQL Plus gibi daha basit ortamlarda bu gerçekten kullanışlı olabilir.
EDIT
daha genel bir durum: temel olarak, standart bir SQL ifadesinde herhangi bir PL/SQL prosedürünü kullanmamız gerektiğinde veya komut satırından bir prosedür çağırmak istediğimizde:
select my_function(<input_params>) from dual;
her iki tarif de Josh Juneau ve Matt Arena tarafından 'Oracle PL/SQL Recipes' kitabından alınmıştır.
DUAL özel bir satırdır, tüm Oracle veritabanlarında varsayılan olarak bir sütun tablosu bulunur. DUAL’nin sahibi SYS’dir.
DUAL, Oracle Database tarafından veri fonksiyonlarıyla birlikte otomatik olarak oluşturulan bir tablodur. Her zaman işletim sistemi işlevlerini (tarih, saat, aritmetik ifade vb.) Almak için kullanılır.
SELECT SYSDATE from dual;