Db2 Procedure一个奇怪的有关问题

Db2 Procedure一个奇怪的问题
CREATE   PROCEDURE   DB2ADMIN.PROCEDURE1   (     in   Msg   Varchar(100)   ,out     ReturnStr   varchar(100))
      MODIFIES   SQL   DATA
      LANGUAGE   SQL
------------------------------------
--   SQL   存储过程
------------------------------------
P1:   BEGIN
                              update   test   set   msg   =     Msg   ;
                              set               ReturnStr=             Msg;
END   P1  
这样写的时候,编译运行,输入参数OK,返回值OK,但是表test的资料没有更新
改为下面这样
CREATE   PROCEDURE   DB2ADMIN.PROCEDURE1   (     in   Msg   Varchar(100)   ,out     ReturnStr   varchar(100))
      MODIFIES   SQL   DATA
      LANGUAGE   SQL
------------------------------------
--   SQL   存储过程
------------------------------------
P1:   BEGIN
                              DECLARE     sMsg       varchar(40)     DEFAULT   ' ';
                              set                         sMsg   =         Msg;
                              update   test   set   msg   =     sMsg   ;
                              set               ReturnStr=             Msg;
  END   P1  
编译运行,输入参数OK,返回值OK,表test的资料也更新了,为什么??


------解决方案--------------------
测试了,两个都不会更新,理应也是。
事务需要使用commit。
加入一句commit;