17,377
社区成员
发帖
与我相关
我的任务
分享
--改了多处 可能还有问题
create or replace procedure ProMax_UserInfo
(
proID in varchar2,
proTableName in varchar2,
proCompanyID in varchar2,
proRemark in varchar2,
probackID in out varchar2
)
AS
MaxID number;
BEGIN
select nvl(max(MAXID),0) into MaxID from Max_UserInfo where TableName=proTableName and CompanyID=proCompanyID;
if MaxID<9;
MaxID:=MaxID+1;
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime) values
(proID,proCompanyID,proTableName,MaxID,proRemark,todate());
probackID:=proCompanyID||'0'||MaxID;
elsif MaxID<99;
MaxID:=MaxID+1;
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime) values
(proID,proCompanyID,proTableName,MaxID,proRemark,todate());
probackID:=proCompanyID||MaxID;
elsif MaxID:>=99;
backID:=-1;
probackID:=backID;
END if;
end;
create or replace procedure ProMax_UserInfo
(
proID in varchar2,
proTableName in varchar2,
proCompanyID in varchar2,
proRemark in varchar2,
probackID in varchar2
)
AS
v_maxid number;
BEGIN
select nvl(max(MAXID),0) into v_maxid
from Max_UserInfo
where TableName=proTableName
and CompanyID=proCompanyID;
if v_maxid<9 then
v_maxid:=(v_maxid||1);
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime)
values
(proID,proCompanyID,proTableName,v_maxid,proRemark,todate());
probackID:=proCompanyID||'0'||v_maxid;
elsif v_maxid<99 then
v_maxid:=(v_maxid||1);
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime)
values
(proID,proCompanyID,proTableName,v_maxid,proRemark,todate());
probackID:=proCompanyID||v_maxid;
else
backID:=-1;
end if;
dbms_output.put_line(backID);
END;
create or replace procedure ProMax_UserInfo
(
proID in varchar2,
proTableName in varchar2,
proCompanyID in varchar2,
proRemark in varchar2,
probackID in varchar2
)
AS
v_maxid number;
BEGIN
select nvl(max(MAXID),0) into v_maxid
from Max_UserInfo
where TableName=proTableName
and CompanyID=proCompanyID;
if MaxID<9 then
MaxID:=(MaxID||1);
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime)
values
(proID,proCompanyID,proTableName,MaxID,proRemark,todate());
probackID:=proCompanyID||'0'||MaxID;
elsif MaxID<99 then
MaxID:=(MaxID||1);
insert into Max_UserInfo(id,CompanyID,TableName,MAXID,Remark,AddTime)
values
(proID,proCompanyID,proTableName,MaxID,proRemark,todate());
probackID:=proCompanyID||MaxID;
else
backID:=-1;
end if;
dbms_output.put_line(backID);
END;
--完整的应该是这样的
select nvl(max(MAXID),0) into v_maxid from Max_UserInfo where TableName=proTableName and
CompanyID=proCompanyID;
--建议你不要取和字段一样的变量名
--select MaxID:=is null(max(MAXID),0) 不知道你这个是什么语法
--你应该是这个意思:如果max(MAXID)为null的话 让它为0吧,在oracle里用nvl
select nvl(max(MAXID),0) from Max_UserInfo where TableName=proTableName and
CompanyID=proCompanyID;