小布老师-PL_SQL(第七讲)

本文介绍了在DOS环境下如何管理未提交的数据库事务,并详细解释了如何使用SQL的Merge语句来同步两个表的数据。此外,还深入探讨了SQL游标的使用方法,包括隐式游标与显式游标的区别及如何利用SQL%ROWCOUNT获取受影响的记录数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、dos下修改表数据需要commit

       1.打开两个dos窗口,一个用sysdba登录,一个用hr用户登录

        2.在sysdba 用户窗口中查询现在未提交的事务:select xid,xidusn from v$transaction; 如果存在数据有的修改事务没有commit;

        3.测试、在hr窗口创建一个表添加数据后在sysdba窗口执行查询未提交的事务,可以看到有数据,在hr窗口提交后,再用sysdba查询;

二、Merge 的使用;

       BEGIN

       MERGE   INTO COPY_EMP c

                       USING  EMPLOYEES  e

                       ON   ( e.employee_id = c.employee_id )

                        WHEN             MATCH         THEN

                                 UPDATE    SET

                                c.first_name = e.first_name,

                                c.last_name = e.last_name

                        WHEN    NO       MATCH   THEN

                                   INSERT  VALUES ( e.first_name,e.last_name);

             END;

三、SQL Cursor (游标)

          1.分为隐式游标(implicit),显示游标(explicit)

           2.通过可以查询更新了多少条记录  SQL%FOUND    /       SQL%NOTFOUND      /   SQL%ROWCOUNT

           3例子:

            create table emp as select * from employees;--创建一个emp表

            DECLARE
               V_ROWS_DELETED VARCHAR(30);
               V_EMPNO EMP.EMPLOYEE_iD%TYPE := 176;
            BEGIN
                DELETE FROM EMP
                WHERE EMPLOYEE_ID = V_EMPNO;
                V_ROWS_DELETED := ( SQL%ROWCOUNT || 'ROW DELETED.');
                DBMS_OUTPUT.PUT_LINE(V_ROWS_DELETED);
            END;

           5.rowcount 在commit之前获取;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值