|
|
2012-1-14 答案C,I, 见ttxing分析。
================================================
2012-1-21 DML error logging 的限制
作者:mentzel.iudith
难度:高
我创建了如下两张表并填入数据:
CREATE TABLE plch_departments
(
dept_id INTEGER PRIMARY KEY
, dept_name VARCHAR2(100)
, total_salary NUMBER
)
/
CREATE TABLE plch_employees
(
employee_id INTEGER PRIMARY KEY
, last_name VARCHAR2(100) UNIQUE DEFERRABLE INITIALLY DEFERRED
, salary NUMBER CHECK ( salary <= 50000 )
, dept_id INTEGER
)
/
BEGIN
INSERT INTO plch_departments VALUES (10, 'Accounting', 30000);
INSERT INTO plch_departments VALUES (20, 'Marketing', 70000);
INSERT INTO plch_employees VALUES (100, 'Jobs', 10000, 10);
INSERT INTO plch_employees VALUES (200, 'Ellison', 20000, 10);
INSERT INTO plch_employees VALUES (300, 'Gates', 30000, 20);
INSERT INTO plch_employees VALUES (400, 'Scott', 40000, 20);
COMMIT;
END;
/
然后我又为上述两张表创建了下面的错误日志表:
BEGIN
DBMS_ERRLOG.CREATE_ERROR_LOG ('plch_departments');
DBMS_ERRLOG.CREATE_ERROR_LOG ('plch_employees');
END;
/
下列的哪些DML语句会导致相应的错误日志表被插入恰好两条记录?
(A)
INSERT INTO plch_employees
SELECT 100*ROWNUM, 'New employee '||ROWNUM, 10000*ROWNUM, 10*ROWNUM
FROM DUAL
CONNECT BY LEVEL <= 3
LOG ERRORS ('Choice1') REJECT LIMIT 2
/
(B)
UPDATE plch_employees
SET salary = salary * 2
LOG ERRORS ('Choice2') REJECT LIMIT UNLIMITED
/
(C)
UPDATE plch_employees
SET employee_id = employee_id + 200
WHERE salary <= 20000
LOG ERRORS ('Choice3') REJECT LIMIT UNLIMITED
/
(D)
INSERT INTO plch_employees
SELECT ROWNUM, 'PL/SQL Challenge', 10000*ROWNUM, 10*ROWNUM
FROM DUAL
CONNECT BY LEVEL <= 3
LOG ERRORS ('Choice4') REJECT LIMIT UNLIMITED
/
(E)
INSERT INTO plch_employees
SELECT employee_id + 200, UPPER(last_name), salary + 5000, dept_id
FROM plch_employees
WHERE employee_id <= 200
LOG ERRORS ('Choice5') REJECT LIMIT UNLIMITED
/
(F)
UPDATE plch_employees
SET employee_id = employee_id + 200
LOG ERRORS ('Choice6') REJECT LIMIT UNLIMITED
/
(G)
UPDATE plch_employees
SET salary = CASE
WHEN dept_id = 10 THEN 100000
END,
last_name = CASE
WHEN dept_id = 20 THEN 'PL/SQL Challenge'
END
LOG ERRORS ('Choice7') REJECT LIMIT UNLIMITED
/
(H)
INSERT /*+ APPEND */ INTO plch_departments
SELECT dept_id, 'PL/SQL department', SUM(salary)
FROM plch_employees
GROUP BY dept_id
LOG ERRORS ('Choice8') REJECT LIMIT UNLIMITED
/
|
|