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 に答える