2010-10-11 2 views
5

Я не могу проверить это прямо сейчас (у меня нет компилятора прямо сейчас), но выполнит ли этот запрос?T-SQL Как запустить процедуру/функцию в запросе SELECT?

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

from myTable 

group by myTable.id_customer 

, что процедура/функция возвращает NUMERIC (18,0) или NULL

подытожить, мне нужно выбрать отчетливое id_customer из этой таблицы и для этого идентификатора - получить номер/нуль значение, связанное с этим id_customer

ответ

10

Синтаксически это будет работать для скалярного UDF, но не хранимой процедуры.

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

Однако в зависимости от того, что делает скалярный UDF, могут быть более эффективные подходы. Если он ищет значение в другой таблице, например, лучше всего просто вставить эту логику в запрос.

+0

@Tony - См. Править. –

+0

большое спасибо Мартин! :) – Tony

1

Как говорит Мартин Смит, предоставляя ему скалярную пользовательскую функцию (UDF), которая исключает один аргумент того же типа, что и «myTable.id_customer», а не табличная или хранимая процедура, а исполняющее соединение выполнено права на UDF, тогда он должен работать нормально.

Смежные вопросы