请高手帮我将一段oracle SQL语句转换成DB2能用的

a29374963 2012-09-20 07:03:05
CREATE OR REPLACE FUNCTION "ADMS"."GETNEWID"(p_OldID varchar2) return varchar2 is
-- Author : XJG(xjg@netsky-tech.com)
-- Created : 2003-11-03 18:38:56
-- Purpose : 从原有的15位身份证号转换成新的18位(附PASCAL代码)
type TIArray is table of integer;
type TCArray is table of char(1);
Result varchar2(18);
W TIArray;
A TCArray;
S integer;
begin
if Length(p_OldID) <> 15 then
raise_application_error(-20999, '不是旧15位身份证号');
end if;
W := TIArray(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
A := TCArray('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
Result := SubStr(p_OldID, 1, 6) || '19' || SubStr(p_OldID, 7, 9);

S := 0;
begin
for i in 1 .. 17 loop
S := S + to_number(SubStr(Result, i, 1)) * W(i);
end loop;
exception
when others then
return '';
end;
S := S mod 11;
Result := Result || A(s + 1);

return(Result);
end GetNewID;






以上语句oracle可以用,DB2报错.
...全文
185 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaojianmi1 2012-10-08
  • 打赏
  • 举报
回复
开启兼容模式吧,那就不需要改代码了
a29374963 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
CREATE OR REPLACE FUNCTION "ADMS"."GETNEWID"(p_OldID varchar2) return varchar2 is
-- Author : XJG(xjg@netsky-tech.com)
-- Created : 2003-11-03 18:38:56
-- Purpose : 从原有的15位身份证号转换成新的18位(附PASCAL代码……
[/Quote]

这是一段函数

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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