问题描述
Oracle存储过程执行后,内部的UPDATE语句不报错同时也未更新预期结果;
例:普通参数存储过程
CREATE OR REPLACE PROCEDURE p (s varchar2)
AS/IS
name varchar(20);
age number :=18;
BEGIN
UPDATE Table1 t SET t.NAME = name --此处UPDATE失效
COMMIT;
END ;
原因分析:
如果列名和存储过程内定义的参数名称一致,则会更新失败,不过如果和列名传进来的参数同名则不受影响
CREATE OR REPLACE PROCEDURE p (name varchar2)
AS/IS
age number :=18;
BEGIN
UPDATE Table1 t SET t.NAME = name --此处UPDATE成功
COMMIT;
END ;
解决方案:
保证参数与列名不同名即可正常事务操作
注:所有事务操作后一定要记得commit;