2013年5月3日 星期五

Oracle DML return value~

參考 Oracle PL SQL 5th
如果想要在執行完DML後知道是否有成功可以使用SQL%FOUND或SQL%ROWCOUNT~


  • SQL%FOUND 
          DECLARE
                   If_change  Boolean
          BEGIN
                  UPDATE  PERSON 
                          SET  Name := 'abc';
                   WHERE  Tel = 080;
                  If_change  := SQL%FOUND;
                  DBMS_OUTPUT.PUT_LINE('Success :' || If_change  );
         END;
  •  SQL%NOTFOUND 

          BEGIN
                  UPDATE  PERSON 
                          SET  Name := 'abc';
                   WHERE  Tel = 080;
                  --如果沒找到--
                  IF (SQL%NOTFOUND )
                       THEN
                              DBMS_OUTPUT.PUT_LINE('No such person !');
                  END IF;
         END;
  • SQL%ROWCOUNT

          BEGIN
                   DELETE  FROM  PERSON  WHERE TEL = 080;
                          
                  DBMS_OUTPUT.PUT_LINE('DELETED  :' || SQL%ROWCOUNT );
         END;

另外的方式就是使用Returning into~
如果多於一列就可以使用BULK COLLECT將值傳回集合中~