Krishna Veni Ответов: 1

'Getnetsal' не распознается встроенным именем функции


create Function getnetsal(@Empno int)returns money
as
begin
declare @sal money,@professionFund money,@professionaltax money,@netsal money
set @professionFund = @sal*0.12;
set @professionaltax =@sal*0.03;
set @netsal=@sal-(@professionFund+@professionaltax)
return @netsal
end;
  
select getnetsal(1)



всякий раз, когда функция excute эта функция выдает ошибку"getnetsal' не является распознанным встроенным именем функции ".

я уже использовал
select dbo.getnetsal(1)


но и это не сработало


пожалуйста, помогите мне.
спасибо тебе

Что я уже пробовал:

выберите getnetsal(1)


всякий раз, когда функция excute эта функция выдает ошибку "getnetsal" не является распознанным встроенным именем функции "

Karthik_Mahalingam

убедитесь, что getnetsal создан в правильной базе данных (не в master )

1 Ответов

Рейтинг:
1

OriginalGriff

Странно - когда я пытаюсь с одним из моих:

SELECT dbo.GetFirstWord('hello there')
Это прекрасно работает.
Кроме...эта функция выглядит неправильно: вы не даете значения @sal вообще, и вы не используете этот параметр, поэтому результат всегда будет нулевым.
Если я скопирую ваш код и создам функцию, то
select dbo.getnetsal(1)
работает и возвращает NULL для меня нормально.
Я бы проверил (в SSMS в разделе " программируемость...Функции...Скалярно-значные функции"), что функция находится в нужной БД и что вы выполняете запрос SELECT к этой БД.


Krishna Veni

мне не нужен нуль. например, предположим,что вы можете передать empid, а затем вернуть netsalary в таблицу при выполнении функции.пожалуйста, помогите мне

OriginalGriff

Вы не используете empid, вы не устанавливаете никакого значения переменной, на которой основываете все остальное, - так что это null, а null распространяется через все выражения. В результате вы получаете null!
Если вы не хотите null, то вам нужно что - то использовать для установки значения-но поскольку я понятия не имею, как выглядит ваша БД или для чего предназначена эта функция, я не могу сделать это за вас!