2016-04-12 31 views
-1

Birkaç select deyiminin (farklı tablolardan) bulunduğu bir prosedürüm var ve bu select ifadelerinin çıktısı geçici bir tabloya yüklenecek. Bu geçici tabloya yüklenen tüm kayıtlar çıktı olarak görüntülenecektir. Şimdi prosedürümün bu geçici tabloya sahip olmaması gereken bir şartım var.Temp tabloları kullanılmadan nasıl okunur ve yazılır

Bunu gerçekleştirme seçeneklerini bana bildirir misiniz?

+2

Sonuçları bir araya getirmek için 'UNION (ALL)' kullanabilirsiniz. Bu MySQL, Oracle veya SQL Server mı? En iyi yaklaşım, DBMS'ye bağlı olabilir. Muhtemelen kullandığınız kodu da göndermeniz tavsiye edilir, aksi halde aldığınız herhangi bir cevap en iyi ihtimalle bir tahmin olacaktır. – GarethD

+0

Sp paylaşabilir misiniz? Çıktının bir örneğini ekleyebilecekseniz de yardımcı olacaktır. Temp tablolarının neden benzer kısıtlamalarla karşılaşan yanıtlardan kaçınmanıza yardımcı olabilecek bir seçenek olmadığını açıklarsanız. –

+0

Bu, Oracle'da. Maalesef, kodu buraya yapıştırmak için onaylarım yok sanırım. Kullandığım geçici tablo çekişme sorunu var. Yani benim şartım, temp tablosunu kullanmamam ve (Prosedürler içinde) kayıtları saklamak için (çoklu seçim cümleleriyle geliyor) – Siddharth

cevap

0

varsayarsak MySQL ... Sen SEÇ sorgular KOLON ve datatype aynı sayıda olduğu varsayıldığında

UPDATE [table1] AS t1 
INNER JOIN [table2] AS t2 
ON t1.[col1] = t2.[col1] 
SET t1.[col2] = t2.[col2]; 
1

gibi bir şey yapabilirdi. En iyi yaklaşımınız, çıkışı görüntülemek için tüm birleştiriciyi ve yansıtıcıyı kullanıyor olabilir. Snippet'in altında umarım yardımcı olur.

--You can try using nested table types here instead of using temp tables or simply UNIONALL 
--Hope below example helps. 

DECLARE 
    p_lst sys_refcursor; 
BEGIN 
    --Assuming that all the SELECT statements have same number of columns as well as datatype 
    OPEN p_lst FOR 
    (SELECT 'AV',1 FROM DUAL 
    UNION ALL 
    SELECT'SH',2 FROM DUAL 
    UNION ALL 
    SELECT 'TK',3 FROM DUAL 
); 
END;