Oracle中的WITH Hold选项

时间:2013-12-21 12:34:54

标签: oracle plsql

我正在学习Oracle。

 CURSOR A  FOR TABLE1
 LOOP
     DELETE B TABLE RECORD BASED ON CURSOR A
 END LOOP
  1. 我正在从表A中读取一个Cursor,并根据结果我删除了另外两个表项。在这种情况下,请告诉我,我需要在声明Oracle或其不需要时提供FOR UPDATE OF。在DB2中我知道我们需要使用hold选项。

  2. 如何在oracle中查询查询中的当前用户详细信息。在sql server中,如果我们给USER,那么详细信息就会出现。

1 个答案:

答案 0 :(得分:1)

在学习Oracle时,此链接可能很有用:http://www.oracle.com/pls/db112/portal.all_books

打开此链接,点击页面顶部的PL/,然后打开PL/SQL Language Reference
在第13章PL/SQL Language elements中找到DELETE Statement extension
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/delete_statement.htm#LNPLS1187


基本上,要删除从游标中获取的记录,游标必须使用FOR UPDATE子句,删除命令必须具有WHERE CUFFENT OF <cursor-variable>子句。

一个示例:

  CURSOR c1 IS
    SELECT employee_id, job_id, salary
    FROM employees FOR UPDATE;
BEGIN
  OPEN c1;
  LOOP
    FETCH c1 INTO my_emp_id, my_job_id, my_sal;
    EXIT WHEN c1%NOTFOUND;
    IF my_job_id = 'SA_REP' THEN
      DELETE employees
      WHERE CURRENT OF c1;
    END IF;
  END LOOP;
END;