你没有commit.
CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (xh IN NUMBER)
AS
BEGIN
UPDATE t_rwb
SET t_rwb.sfwrw = 0
WHERE t_rwb.xh = xh;
commit; --!!!
END;
CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (xh IN NUMBER)
AS
BEGIN
UPDATE t_rwb
SET t_rwb.sfwrw = 0
WHERE t_rwb.xh = xh;
commit; --!!!
END;
AS
BEGIN
UPDATE t_rwb
SET sfwrw = 0
WHERE t_rwb.xh = xh;
END update_rwb_sfwrw_null;
执行之后t_rwb.sfwrw的值全部变成了0。
并没有只更新XH相同的记录。好象参数没起作用。
CREATE OR REPLACE PROCEDURE "UPDATE_RWB_SFWRW_NULL" (ixh IN NUMBER)
AS
BEGIN
UPDATE t_rwb
SET sfwrw = 0
WHERE xh = ixh;
END update_rwb_sfwrw_null;
输入参数是否为空的判断。如果为空的话update不会更新任何行,并且有异常。
应为
CREATE OR REPLACE PROCEDURE UPDATE_RWB_SFWRW_NULL (xh IN NUMBER)
AS
BEGIN
if xh is null then
return ;
end if;
UPDATE t_rwb
SET sfwrw = 0
WHERE t_rwb.xh = xh;
END update_rwb_sfwrw_null;