SORU
22 Temmuz 2010, PERŞEMBE


TAKIN birleştirerek ve/CTE İLE

Çok karmaşık bir CTE var ve fiziksel bir tabloya sonucu eklemek istiyorum.

Aşağıdaki geçerli mi?

INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos 
(
    BatchID,
    AccountNo,
    APartyNo,
    SourceRowID
)       
WITH tab (
  -- some query
)    
SELECT * FROM tab

Beni yeniden sağlayacak bu CTE oluşturmak için bir işlevi kullanarak düşünüyorum. Herhangi bir düşünce?

CEVAP
22 Temmuz 2010, PERŞEMBE


CTE ilk koymak ve EKLEMEK birleştirmek select deyimi ile yapmanız gerekir. Ayrıca, "" CTE adı aşağıdaki anahtar sözcüğü isteğe bağlı değil GİBİ:

WITH tab AS (
    bla bla
)
INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos (
BatchID,
AccountNo,
APartyNo,
SourceRowID
)  
SELECT * FROM tab

Lütfen kodu CTE tam olarak dört alan döneceği ve bu alanlar INSERT deyiminde belirtilen düzen ve uyumu olduğunu varsayar unutmayın. Eğer durum böyle değilse, "SEÇİN *" gerektiren alanlar belirli bir seçin. değiştir sadece

Bir fonksiyon kullanarak ilgili sorunuz için, ben söyleyebilirim olarak "duruma göre değişir". Eğer hız fonksiyonu ile kullanıldığında kabul edilebilir performans nedenler yüzünden, ve bir tablodaki veri yerleştirme, işlev bir seçenek olabileceğini düşünüyorum. Öte yandan, kullanman gerekiyorsa sonuç CTE birkaç farklı sorgular ve hızı zaten bir sorun, ben gider tablosu (ya normal ya da geçici).

WITH common_table_expression (Transact-SQL)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • MrDevin521

    MrDevin521

    18 Temmuz 2010
  • NextKsa

    NextKsa

    7 EKİM 2009