想把一个delphi自定义的函数转为sqlserver数据库自定义的函数(执行成功后马上给分)。
delphi函数如下:
(实现字符串的数字部分自增功能,比如把HT001259变为HT001260,J001230变为J001231)
function IncString(oldbh:string):string;
var s,ns:string;
  i,j,fporder:integer;
begin
    s:=trim(oldbh);
    i:=length(s);
    if (copy(s,i,1)>'9') or (copy(s,i,1)<'0') then
        s:=copy(s,1,i-1)+'9';
    while true do
      begin
        if  (copy(s,i,1)>'9') or (copy(s,i,1)<'0') then
           break
        else
            dec(i);
        if i<1 then break;
      end;    ns:=copy(s,i+1,length(s)-i);
    j:=length(s)-i;
    try
      fporder:=strtoint(ns)+1;
    except
      showmessage('编号:'+s+'自动增加出错!');
      result:='ERROR';
      exit;
    end;
    ns:=copy(trim(inttostr(100000000+fporder)),
      length(trim(inttostr(100000000+fporder)))-j+1,j);
    ns:=copy(s,1,i)+ns;
    result:=ns;
end;变为sqlserver数据库自定义的函数(可以在存储过里面调用)
CREATE FUNCTION IncString (@oldchar char(10))
    RETURNS char(10)
AS
BEGIN
   declare @s char(10),@ns char(10),@i integer,@j integer,@fporder integer
  
   select @s=rtrim(ltrim(@oldchar))
   select @i=len(@s)
    if (substring(@s,@i,1)>'9') or (substring(@s,@i,1)<'0') 请高手继续... (执行成功后马上给分)

解决方案 »

  1.   

    以J001230变为J001231为例:
    declare @numstr char(7),
    @Max_num int,
    @Max_Len int,
    @Max_Num char(7)
    SET @numstr=RIGHT(@orderstr,7)
    SET @Max_Num=CAST(@Max_No AS int)
    SET @Max_Num=@Max_Num+1
    SET @Max_Len=Len(@Max_Num)
    SET @Max_Str=@Max_Num
    IF @Max_Len=7
    BEGIN
    SET @Max_Str=@Max_Str
    end else
    begin
     while @Max_Len<7 do
     begin
       set @Max_str='0'+@Max_str
       set @Max_Len=@Max_Len+1
     end
    endselect 'J'+@max_str
      

  2.   

    TO hsmserver(撒哈拉之雨的悲伤):
     你的代码只能实现1230到1231的变化,不能实现1239到1240的变化,我想要通用的。那个delphi函数已经可以实现这个功能,只需要把delphi函数中所有delphi函数变量变成sqlserver中的即可。不知道哪位能帮我把变量和调用的系统函数转化为sqlserver中的 变量和函数?