我正在学习Oracle。
CURSOR A FOR TABLE1
LOOP
DELETE B TABLE RECORD BASED ON CURSOR A
END LOOP
我正在从表A中读取一个Cursor,并根据结果我删除了另外两个表项。在这种情况下,请告诉我,我需要在声明Oracle或其不需要时提供FOR UPDATE OF。在DB2中我知道我们需要使用hold选项。
如何在oracle中查询查询中的当前用户详细信息。在sql server中,如果我们给USER,那么详细信息就会出现。
答案 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;