2010-10-11 11 views
5

Nie mogę tego teraz sprawdzić (nie mam teraz kompilatora), ale czy to zapytanie zostanie wykonane?T-SQL Jak uruchomić procedurę/funkcję w zapytaniu SELECT?

select myTable.id_customer, [my_procedure_or_function](myTable.id_customer) 

from myTable 

group by myTable.id_customer 

że procedura/funkcja zwraca numeryczne (18,0) lub NULL

Podsumowując, muszę wybrać wyraźną id_customer z tej tabeli, a do tego id - uzyskać numer/null wartość aktualnie powiązana z tym id_customer

Odpowiedz

10

Syntaktycznie będzie działać dla skalarnego UDF, ale nie procedury przechowywanej.

select myTable.id_customer, mySchema.myFunction(myTable.id_customer) As myAlias 
from myTable 
group by myTable.id_customer 

Jednak w zależności od tego, co robi skalaryczny UDF, może występować więcej podejść wykonawczych. Jeśli na przykład szuka wartości w innej tabeli, najlepiej jest po prostu wstawić tę logikę do zapytania.

+0

@ Tony - Patrz edycja. –

+0

bardzo dziękuję Martin! :) – Tony

1

Jak mówi Martin Smith, pod warunkiem, że jest to skalarna funkcja zdefiniowana przez użytkownika (UDF), która oprócz pojedynczego argumentu tego samego typu co "myTable.id_customer", nie jest procedurą tabelaryczną lub przechowywaną, a wykonujące połączenie ma wykonać prawa do UDF, to powinno działać dobrze.

Powiązane problemy