|
2011-12-08答案A. DBMS_SQL.execute的返回值是执行行数,仅对DML(DELETE,INSERT,UPDATE)有效。
B:是DDL不是DML
C:是SELECT不是DML
D:总共UPDATE了三行不是一行。
========================================
2011-12-09 Inner capture
作者:Steven Feuerstein
难度:中
我创建了这张表并填入数据:
CREATE TABLE plch_employees
(
employee_id INTEGER
, salary NUMBER
)
/
BEGIN
INSERT INTO plch_employees VALUES (1, 500);
INSERT INTO plch_employees VALUES (2, 750);
COMMIT;
END;
/
哪些选项实现了一个名字为plch_change_salary的存储过程,从而使得下列代码执行之后会显示"1000"?
DECLARE
l_salary plch_employees.salary%TYPE;
BEGIN
plch_change_salary (1, 1000);
SELECT salary INTO l_salary
FROM plch_employees
WHERE employee_id = 1;
DBMS_OUTPUT.put_line (l_salary);
END;
/
(A)
CREATE OR REPLACE PROCEDURE plch_change_salary (
employee_id IN plch_employees.employee_id%TYPE
, salary IN plch_employees.salary%TYPE)
IS
BEGIN
UPDATE plch_employees
SET salary = salary
WHERE employee_id = employee_id;
END;
/
(B)
CREATE OR REPLACE PROCEDURE plch_change_salary (
employee_id IN plch_employees.employee_id%TYPE
, salary IN plch_employees.salary%TYPE)
IS
BEGIN
UPDATE plch_employees e
SET e.salary = salary
WHERE e.employee_id = employee_id;
END;
/
(C)
CREATE OR REPLACE PROCEDURE plch_change_salary (
employee_id_in IN plch_employees.employee_id%TYPE
, salary_in IN plch_employees.salary%TYPE)
IS
BEGIN
UPDATE plch_employees
SET salary = salary_in
WHERE employee_id = employee_id_in;
END;
/
(D)
CREATE OR REPLACE PROCEDURE plch_change_salary (
employee_id IN plch_employees.employee_id%TYPE
, salary IN plch_employees.salary%TYPE)
IS
BEGIN
UPDATE plch_employees
SET salary = plch_change_salary.salary
WHERE employee_id = plch_change_salary.employee_id;
END;
/
|
|