执行后似乎不能立刻生效,例如执行XTYHQD_DELETE后,select用户表,发现删除的记录仍然在,请问是否存储过程 设计有问题?错在哪呢? 存储过程 :
create or replace procedure XTYHQD_DELETE(DMS in varchar,
ZDR in varchar,
FHZ out number) as -----------------------------------------------------------------------
--------------存储过程功能:删除一条用户记录---------------------------
--------------参数1DMS :要删除用户的的代码-------------------------
--------------参数2ZDR :执行此操作的制单人代码---------------------
--------------参数3FHZ :返回值-------------------------------------
-------------------1 : 删除用户记录成功---------------------------
-------------------2 :该用户关联系统日志表(xtrz)制单人代码-------
-------------------3 :该用户关联系统权限表(xtqxqd)制单人代码-----
-------------------4 :该用户关联系统角色表(xtjsqd)制单人代码-----
-------------------5 :该用户关联系统用户表(xtyhqd)制单人代码-------
-------------------999 :表中无此记录-------------------------------
--------------版本 : VER 0000.0000.0001-------------------------
----------------------------------------------------------------------- flag number(8);
yhmc varchar2(64); ---
begin ---验证是否有用户关联 select count(*) into flag from XTRZ where ZDR = DMS; ---验证是否关联系统日志表(xtrz)制单人代码
if flag > 0 then
FHZ := 2;
dbms_output.put_line('该用户关联系统日志表(xtrz)制单人代码!');
return;
end if; select count(*) into flag from XTQXQD where ZDR = DMS; ---验证是否关联系统权限表(xtqxqd)制单人代码
if flag > 0 then
FHZ := 3;
dbms_output.put_line('该用户关联系统权限表(xtqxqd)制单人代码!');
return;
end if; select count(*) into flag from XTJSQD where ZDR = DMS; ---验证是否关联系统角色表(xtjsqd)制单人代码
if flag > 0 then
FHZ := 4;
dbms_output.put_line('该用户关联系统角色表(xtjsqd)制单人代码!');
return;
end if; select count(*) into flag from XTYHQD where ZDR = DMS; ---验证是否关联系统用户表(xtyhqd)制单人代码
if flag > 0 then
FHZ := 5;
dbms_output.put_line('该用户关联系统用户表(xtyhqd)制单人代码!');
return;
end if; ---(预留位..................) ---验证清单中是否有此记录?
select count(*) into flag from XTYHQD where DM = DMS;
if flag = 0 then
FHZ := 999;
dbms_output.put_line('表中无此记录!');
return;
end if; ---开始删除记录
select mc
into yhmc
from XTYHQD
where DM = DMS
and rownum = 1;
delete from XTYHQD where DM = DMS; ---删除成功,记录日志信息
insert into XTRZ
(RZLX, XTMK, XW, RQ, ZDR)
values
('Soft Type',
'系统用户',
'删除了一条用户记录,用户代码:' || DMS || ',用户名称:' || yhmc,
sysdate,
ZDR); FHZ := 1;
dbms_output.put_line('删除用户记录成功!');end XTYHQD_DELETE;
create or replace procedure XTYHQD_DELETE(DMS in varchar,
ZDR in varchar,
FHZ out number) as -----------------------------------------------------------------------
--------------存储过程功能:删除一条用户记录---------------------------
--------------参数1DMS :要删除用户的的代码-------------------------
--------------参数2ZDR :执行此操作的制单人代码---------------------
--------------参数3FHZ :返回值-------------------------------------
-------------------1 : 删除用户记录成功---------------------------
-------------------2 :该用户关联系统日志表(xtrz)制单人代码-------
-------------------3 :该用户关联系统权限表(xtqxqd)制单人代码-----
-------------------4 :该用户关联系统角色表(xtjsqd)制单人代码-----
-------------------5 :该用户关联系统用户表(xtyhqd)制单人代码-------
-------------------999 :表中无此记录-------------------------------
--------------版本 : VER 0000.0000.0001-------------------------
----------------------------------------------------------------------- flag number(8);
yhmc varchar2(64); ---
begin ---验证是否有用户关联 select count(*) into flag from XTRZ where ZDR = DMS; ---验证是否关联系统日志表(xtrz)制单人代码
if flag > 0 then
FHZ := 2;
dbms_output.put_line('该用户关联系统日志表(xtrz)制单人代码!');
return;
end if; select count(*) into flag from XTQXQD where ZDR = DMS; ---验证是否关联系统权限表(xtqxqd)制单人代码
if flag > 0 then
FHZ := 3;
dbms_output.put_line('该用户关联系统权限表(xtqxqd)制单人代码!');
return;
end if; select count(*) into flag from XTJSQD where ZDR = DMS; ---验证是否关联系统角色表(xtjsqd)制单人代码
if flag > 0 then
FHZ := 4;
dbms_output.put_line('该用户关联系统角色表(xtjsqd)制单人代码!');
return;
end if; select count(*) into flag from XTYHQD where ZDR = DMS; ---验证是否关联系统用户表(xtyhqd)制单人代码
if flag > 0 then
FHZ := 5;
dbms_output.put_line('该用户关联系统用户表(xtyhqd)制单人代码!');
return;
end if; ---(预留位..................) ---验证清单中是否有此记录?
select count(*) into flag from XTYHQD where DM = DMS;
if flag = 0 then
FHZ := 999;
dbms_output.put_line('表中无此记录!');
return;
end if; ---开始删除记录
select mc
into yhmc
from XTYHQD
where DM = DMS
and rownum = 1;
delete from XTYHQD where DM = DMS; ---删除成功,记录日志信息
insert into XTRZ
(RZLX, XTMK, XW, RQ, ZDR)
values
('Soft Type',
'系统用户',
'删除了一条用户记录,用户代码:' || DMS || ',用户名称:' || yhmc,
sysdate,
ZDR); FHZ := 1;
dbms_output.put_line('删除用户记录成功!');end XTYHQD_DELETE;
在delete 和insert 后面都加个commit;
BEGIN
--其它语句
COMMIT;
EXCEPTION
WHEN 异常1 THEN
--异常处理1
WHEN 异常2 THEN
--异常处理2
WHEN OTHERS THEN
ROLLBACK;
END;
/