2017-02-07 3 views
0

Пожалуйста, обратите внимание на следующие функции и вызов функции:Почему имя моей функции неоднозначно? Это не имхо?

create function [dbo].[GetCidrIpRange2](@CidrIp varchar(15)) 
returns @result table 
(
    LowRange varchar(15) not null, 
    HighRange varchar(15) not null, 
    AddressQty bigint not null 
) 
as 
begin 
    declare @Base  bigint = cast(4294967295 as bigint) 
    declare @Mask  int  = cast(substring(@CidrIp, patindex('%/%' , @CidrIP) + 1, 2) as int) 
    declare @Power  bigint = Power(2.0, 32.0 - @Mask) - 1 
    declare @LowRange bigint = dbo.[IPAddressToInteger](left(@CidrIp, patindex('%/%' , @CidrIp) - 1)) & (@Base^@Power) 
    declare @HighRange bigint = @LowRange + @Power 

    insert @result 
    select 
     LowRange = @LowRange 
     ,HighRange = @HighRange 
     ,AddressQty = convert(bigint, power(2.0, (32.0 - @Mask))) 
    return 
end 

select [dbo].[GetCidrIpRange2]('195.65.254.11/2'); 

Я получаю следующее сообщение об ошибке:

Cannot find either column "dbo" or the user-defined function or aggregate "dbo.GetCidrIpRange2", or the name is ambiguous.

имя является уникальным, и когда я запускаю только функцию, она создала функцию надлежащим образом в сессии:

Command(s) completed successfully.

Что я делаю не так?

+0

Таблица функция должна быть вызвана с 'п от'' Select * из udf' –

ответ

3

Вы пропускаете FROM:

SELECT * FROM [dbo].[GetCidrIpRange2]('195.65.254.11/2'); 
+0

Исправлена ​​опечатка, надеюсь, вы не против .. –

+0

не делать Ум вообще, спасибо! –

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