100分求把一delphi简单函数转化为数据库自定义函数

pgz_007 2006-05-30 10:56:01
想把一个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')

请高手继续... (执行成功后马上给分)
...全文
208 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
postren 2006-05-30
  • 打赏
  • 举报
回复
楼上都说了

纯路过
hsmserver 2006-05-30
  • 打赏
  • 举报
回复
sorry,
return 'j'+@max_str
hsmserver 2006-05-30
  • 打赏
  • 举报
回复
以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
end

select 'J'+@max_str

pgz_007 2006-05-30
  • 打赏
  • 举报
回复
TO hsmserver(撒哈拉之雨的悲伤):
你的代码只能实现1230到1231的变化,不能实现1239到1240的变化,我想要通用的。

那个delphi函数已经可以实现这个功能,只需要把delphi函数中所有delphi函数变量变成sqlserver中的即可。

不知道哪位能帮我把变量和调用的系统函数转化为sqlserver中的 变量和函数?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧