Подтвердить что ты не робот

Как вызвать скалярную функцию в SQL Server 2008

Я создал Scalar Functions, он был создан успешно, но когда я вызываю функцию с помощью оператора select, он говорит о недопустимом имени объекта "dbo.fun_functional_score".

моя функция:

 ALTER function [dbo].[fun_functional_score] (@phy_id varchar(20))
 returns  varchar(50)

as
begin 

declare @level_initial int, @level_current int

-- initial functional score
set @level_initial=(SELECT pflag.fun_level
FROM tbl_phy_demographic_details as [phy] 
    inner join tbl_all_purple_flag_level as [pflag] on phy.Demographic_id=pflag.Id 
WHERE [email protected]_id
    and pflag.visited_count=(select MAX(visited_count)-1 from tbl_all_purple_flag_level ))


-- current functional score
set @level_current=(SELECT pflag.fun_level
FROM tbl_phy_demographic_details as [phy] 
    inner join tbl_all_purple_flag_level as [pflag] on phy.Demographic_id=pflag.Id 
WHERE [email protected]_id
    and pflag.visited_count=(select MAX(visited_count) from tbl_all_purple_flag_level ))


--to calculate functional score
declare @fun_level varchar(20),@result varchar(50)

set  @[email protected][email protected]_initial;

 if @fun_level = 0   set @result='Maintained' 
if @fun_level = '-1'  set @result='Minor Improvement' 
if @fun_level = '-2'  set @result='Moderate Improvement' 
if @fun_level = '-3'  set @result='Significant Improvement' 
if @fun_level =  '-4'  set @result='Substantial Improvement' 
if @fun_level =  '1'  set @result='Minor Reduction' 
if @fun_level =  '2'  set @result='Moderate Reduction' 
if @fun_level =  '3'  set @result='Significant Reduction' 
if @fun_level =  '4'  set @result='Substantial Reduction' 




return @result

end

Я использовал этот select для вызова

 select * from dbo.fun_functional_score('01091400003') as [er]

или

 select * from dbo.fun_functional_score('01091400003') 

обе показывают ошибку "Недопустимое имя объекта" dbo.fun_functional_score '. "

где я сделал ошибку. может кто-нибудь мне помочь...

4b9b3361

Ответ 1

Ваш синтаксис предназначен для функции с табличной оценкой, которая возвращает набор результатов и может быть запрошена как таблица. Для скалярной функции do

 select  dbo.fun_functional_score('01091400003') as [er]

Ответ 2

У вас есть функция скалярного значения, а не функция таблицы. Предложение FROM используется для таблиц. Просто запросите значение непосредственно в списке столбцов.

select dbo.fun_functional_score('01091400003')

Ответ 3

По какой-то причине я не смог использовать свою скалярную функцию, пока не назову ее с помощью скобок, например:

select [dbo].[fun_functional_score]('01091400003')

Ответ 4

Для Скалярной функции Синтаксис

Select dbo.Function_Name(parameter_name)

Select dbo.Department_Employee_Count('HR')