Oracle 的SQL 代碼 轉 成SQL Server 代碼,

才子鸣 2008-04-15 09:10:26

CREATE OR REPLACE FUNCTION SFCS.PARSING_TYPE(OLD_SN IN VARCHAR2,NEW_SN OUT VARCHAR2,PRINT_CODE_PATH OUT VARCHAR2)
RETURN VARCHAR2 IS S1 NUMBER;SN1 VARCHAR2(4);SN2 VARCHAR2(7);SN3 VARCHAR2(6);
BEGIN S1:=LENGTH(OLD_SN);
IF S1=29 THEN SN1:=SUBSTR(OLD_SN,13,4);
SN2:=SUBSTR(OLD_SN,17,7);
SN3:=SUBSTR(OLD_SN,25,5);
NEW_SN:=SN1||SN2||SN3;
ELSIF S1=30 THEN SN1:=SUBSTR(OLD_SN,13,4);
SN2:=SUBSTR(OLD_SN,17,7);
SN3:=SUBSTR(OLD_SN,25,5);
NEW_SN:=SN1||SN2||SN3;
else
NEW_SN:=old_sn;
end if;
PRINT_CODE_PATH:='C:\WINNT\MITAC_APP\BARCODE\DMD-3.TXT';
END;
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
才子鸣 2008-04-15
  • 打赏
  • 举报
回复
Very Thanks!
結了。
給分
flairsky 2008-04-15
  • 打赏
  • 举报
回复
S1=29

S1=30
代码完全一样?
-狙击手- 2008-04-15
  • 打赏
  • 举报
回复
go past
昵称被占用了 2008-04-15
  • 打赏
  • 举报
回复
有个地方没写好:


set @S1:=LEN(@OLD_SN)
改成
set @S1=LEN(@OLD_SN)
昵称被占用了 2008-04-15
  • 打赏
  • 举报
回复
S1=29

S1=30
的两段处理完全一样,好像没必要这么判断,上面的尊重原代码这么写的,可以简化成

create Proc SFCS.PARSING_TYPE
@OLD_SN VARCHAR(100),
@NEW_SN VARCHAR(100) output,
@PRINT_CODE_PATH VARCHAR(100) output
as
declare @S1 int
declare @SN1 VARCHAR(4)
declare @SN2 VARCHAR(7)
declare @SN3 VARCHAR(6)

set @S1:=LEN(@OLD_SN)

IF @S1 in (29,30)
begin
set @SN1=SUBSTRING(@OLD_SN,13,4)
set @SN2=SUBSTRING(@OLD_SN,17,7)
set @SN3=SUBSTRING(@OLD_SN,25,5)
set @NEW_SN=@SN1+@SN2+@SN3
end
else
set @NEW_SN=@old_sn

set @PRINT_CODE_PATH:='C:\WINNT\MITAC_APP\BARCODE\DMD-3.TXT'



昵称被占用了 2008-04-15
  • 打赏
  • 举报
回复
create Proc SFCS.PARSING_TYPE
@OLD_SN VARCHAR(100),
@NEW_SN VARCHAR(100) output,
@PRINT_CODE_PATH VARCHAR(100) output
as
declare @S1 int
declare @SN1 VARCHAR(4)
declare @SN2 VARCHAR(7)
declare @SN3 VARCHAR(6)

set @S1:=LEN(@OLD_SN)

IF @S1=29
begin
set @SN1=SUBSTRING(@OLD_SN,13,4)
set @SN2=SUBSTRING(@OLD_SN,17,7)
set @SN3=SUBSTRING(@OLD_SN,25,5)
set @NEW_SN=@SN1+@SN2+@SN3
end
ELSE IF @S1=30
begin
set @SN1=SUBSTRING(@OLD_SN,13,4)
set @SN2=SUBSTRING(@OLD_SN,17,7)
set @SN3=SUBSTRING(@OLD_SN,25,5)
set @NEW_SN=@SN1+@SN2+@SN3
end
else
set @NEW_SN=@old_sn

set @PRINT_CODE_PATH:='C:\WINNT\MITAC_APP\BARCODE\DMD-3.TXT'

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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