想把一个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') 请高手继续... (执行成功后马上给分)
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') 请高手继续... (执行成功后马上给分)
解决方案 »
- 不用按shift和ctrl,只需按下鼠标左键在listview拖动如何实现多项选中?
- 如何指定多网卡机器中的其中一块网卡,又如何获取指定网卡的IP地址
- 怎么将验证码图片保存到本地或是用Image显示
- 如何在win2000未登录前运行scktsrvr.exe
- mxoutlookbarpro安装的问题,很急,想要多少分都得,我能给的都尽量给,
- gif不会动,想用多线程来打开所在的form这要怎么样
- 怎调用这个SQL语句?
- 又一个access查询问题,解决马上给分!
- 请教关于ThemeEngine控件的一些基本问题
- 看看这里最少需要多少时间回复一个帖子?
- 报表问题,报表高手进来看看!
- 为什么我安装了oracle9i在odbc驱动程序中找不到Oracle Provider for OLE DB驱动?
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
你的代码只能实现1230到1231的变化,不能实现1239到1240的变化,我想要通用的。那个delphi函数已经可以实现这个功能,只需要把delphi函数中所有delphi函数变量变成sqlserver中的即可。不知道哪位能帮我把变量和调用的系统函数转化为sqlserver中的 变量和函数?