2012-03-23 12 views
17

Najwyraźniej nie mogę ich użyć. Dostaję komunikat o błędzie, jak:Czy można mieć tabele temp w funkcji?

Nieprawidłowe użycie bocznej-dokonujące operatora „Select” w funkcji

Jeśli chcę zrobić coś takiego:

select bleh 
    into #temp 
    from Blah 

... wewnątrz funkcji.

+2

Zamiast tego można użyć zmiennej tabeli. –

Odpowiedz

25

Nie, za this thread where the same question was asked, nie można, ale można użyć table variable

DECLARE @MyTempTableVariable TABLE (SCHEMA) 

INSERT INTO @MyTempTableVariable 
SELECT bleh 
FROM bleh 
+0

Błąd liczności jest największym powodem, dla którego chcielibyśmy zastąpić zmienną tabeli tabelą tymczasową w funkcji SQL DB. Istnieje jednak obejście tego problemu, opisane szczegółowo tutaj: http: //blogs.msdn.com/b/blogdoezequiel/archive/2012/12/01/table-variables-and-row-estimations.aspx#.VGC5oMnm7HS Dodawanie opcji (RECOMPILE) do instrukcji, w której używana jest zmienna tabeli, może poprawić wydajność. – Vladislav

1

Można również zrobić to z CTE. Zobacz przeglądarkę szablonów w SSMS. IntelliSense myli problem i wyświetli błąd, dopóki nie ukończysz CTE i następujące wstawienie/wybór, ale zadziała.

+0

To powinien być komentarz, a nie odpowiedź. –

+0

@MohammadAkbari: Nie zgadzam się. Dodaje bardzo ważną alternatywę do drugiej odpowiedzi. – davidhigh

+2

@ Mniejszy Wilk: przykład lub jakaś część kodu byłaby dobra. – davidhigh

Powiązane problemy