0

我有这个功能

create function getmobnum(@input bigint)
RETURNS bigint
as
 begin
  declare @output varchar(10)='';
  declare @i int = 1;

while @i <= (len(@input)) begin
    declare @unicode varchar(1) = substring(cast(@input as varchar(10)), @i, 1);
    if @i>3 and @i<9 
    begin
       set @output=@output+'*';end
    else
       begin
       set @output=@output+@unicode;end
       set @i=@i+1;
end

return @output
end;

我在这里调用函数

declare @premob varchar(10)='';
set @premob= dbo.getmobnum(@premo);

但是出现这个错误

将数据类型 varchar 转换为 bigint 时出错。

4

1 回答 1

2

您的函数声明它将返回一个 bigint,但返回的 @output 是一个 varchar。

将函数更改为也返回一个 varchar。

SQL 小提琴演示

于 2013-07-29T03:50:38.843 回答