db2数据库自定义函数DECLARE语句报错 30
第五行报错,搞不明白报错原因,求大神解救我。CREATEFUNCTION"DB2ADMIN"."GETSTRINGBYSYMBOL"("tString"VARCHAR(5...
第五行报错,搞不明白报错原因,求大神解救我。
CREATE FUNCTION "DB2ADMIN"."GETSTRINGBYSYMBOL"
("tString" VARCHAR(50),"tSymbol" VARCHAR(50),"tPos" INTEGER)
RETURNS VARCHAR(100)
BEGIN
DECLARE tResult VARCHAR(100) default NULL;
DECLARE tTempPos INTEGER;
if(tPos = 1)then
if(instr(tString,tSymbol)<>0) then
tResult = nvl(substr(tString,0,instr(tString,tSymbol)-1),' ');
else
tResult = nvl(tString,' ');
end if;
else
if(tPos>1)then
tTempPos = tPos -1 ;
end if;
if(instr(tString,tSymbol)<>0) then
tResult = nvl(getStringBySymbol(nvl(substr(tString,instr(tString,tSymbol)+1),' '),tSymbol,tTempPos),' ');
else
tResult = ' ';
end if;
end if;
return(tResult);
end GETSTRINGBYSYMBOL; 展开
CREATE FUNCTION "DB2ADMIN"."GETSTRINGBYSYMBOL"
("tString" VARCHAR(50),"tSymbol" VARCHAR(50),"tPos" INTEGER)
RETURNS VARCHAR(100)
BEGIN
DECLARE tResult VARCHAR(100) default NULL;
DECLARE tTempPos INTEGER;
if(tPos = 1)then
if(instr(tString,tSymbol)<>0) then
tResult = nvl(substr(tString,0,instr(tString,tSymbol)-1),' ');
else
tResult = nvl(tString,' ');
end if;
else
if(tPos>1)then
tTempPos = tPos -1 ;
end if;
if(instr(tString,tSymbol)<>0) then
tResult = nvl(getStringBySymbol(nvl(substr(tString,instr(tString,tSymbol)+1),' '),tSymbol,tTempPos),' ');
else
tResult = ' ';
end if;
end if;
return(tResult);
end GETSTRINGBYSYMBOL; 展开
展开全部
网上都说db2不支持修改字段名
一般方式是建立新字段与待删除字段类型一样
然后把旧字段值拷贝到新字段
最后把旧字段删除,就可以了
一般方式是建立新字段与待删除字段类型一样
然后把旧字段值拷贝到新字段
最后把旧字段删除,就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将Default NULL 删除
追问
之前就是没有default null的 也不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-03-26
展开全部
无差错代码
CREATE FUNCTION MS.RENODE
(NODECODE VARCHAR(10) )
RETURNS VARCHAR(10)
LANGUAGE SQL
NO EXTERNAL ACTION f1:
BEGIN ATOMIC
DECLARE V_FCODE VARCHAR(2);DECLARE
V_LCODE VARCHAR(8);SET
V_FCODE =SUBSTR(NODECODE,1,2);SET
V_LCODE = SUBSTR(NODECODE,3,8);IF(V_FCODE ='00')
THEN SET V_FCODE = '07';ELSEIF(V_FCODE ='01')
THEN SET V_FCODE = '08';END IF;RETURN V_FCODE||V_LCODE;END;
CREATE FUNCTION MS.RENODE
(NODECODE VARCHAR(10) )
RETURNS VARCHAR(10)
LANGUAGE SQL
NO EXTERNAL ACTION f1:
BEGIN ATOMIC
DECLARE V_FCODE VARCHAR(2);DECLARE
V_LCODE VARCHAR(8);SET
V_FCODE =SUBSTR(NODECODE,1,2);SET
V_LCODE = SUBSTR(NODECODE,3,8);IF(V_FCODE ='00')
THEN SET V_FCODE = '07';ELSEIF(V_FCODE ='01')
THEN SET V_FCODE = '08';END IF;RETURN V_FCODE||V_LCODE;END;
追问
报错跟上图一样,只是你这里声明变量是第7行,我报错的line也在第7行
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询