微智科技网
您的当前位置:首页plsql练习题及答案

plsql练习题及答案

来源:微智科技网
plsql练习题及答案

标题:PL/SQL练习题及答案

PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库中的一种编程语言,用于编写存储过程、触发器和函数等数据库对象。在学习和掌握PL/SQL的过程中,进行一些练习题是非常有帮助的。本文将为大家提供一些PL/SQL练习题及其答案,帮助读者加深对PL/SQL的理解和应用。 1. 编写一个PL/SQL程序,创建一个名为\"employees\"的表,包含以下字段:员工编号(emp_id),员工姓名(emp_name),员工职位(emp_position),员工工资(emp_salary)。然后插入几条员工记录,并查询该表的所有数据。 答案: ```sql

-- 创建employees表 CREATE TABLE employees ( emp_id NUMBER,

emp_name VARCHAR2(50), emp_position VARCHAR2(50), emp_salary NUMBER );

-- 插入员工记录

INSERT INTO employees VALUES (1, 'John', 'Manager', 5000); INSERT INTO employees VALUES (2, 'Jane', 'Developer', 4000); INSERT INTO employees VALUES (3, 'Mike', 'Analyst', 3500);

-- 查询表的所有数据 SELECT * FROM employees; ```

2. 编写一个PL/SQL程序,创建一个名为\"get_employee_salary\"的存储过程,该存储过程接收一个员工编号作为输入参数,并返回该员工的工资。 答案: ```sql

-- 创建存储过程

CREATE OR REPLACE PROCEDURE get_employee_salary( emp_id IN NUMBER, salary OUT NUMBER ) AS BEGIN

SELECT emp_salary INTO salary FROM employees WHERE emp_id = emp_id; END; /

-- 调用存储过程 DECLARE

emp_salary NUMBER; BEGIN

get_employee_salary(1, emp_salary);

DBMS_OUTPUT.PUT_LINE('Employee Salary: ' || emp_salary); END; / ```

3. 编写一个PL/SQL程序,创建一个名为\"update_employee_salary\"的触发器,当更新员工工资时,将更新前的工资和更新后的工资插入到一个名为\"salary_history\"的表中。 答案: ```sql

-- 创建salary_history表 CREATE TABLE salary_history ( emp_id NUMBER, old_salary NUMBER, new_salary NUMBER, update_date DATE );

-- 创建触发器

CREATE OR REPLACE TRIGGER update_employee_salary BEFORE UPDATE OF emp_salary ON employees FOR EACH ROW BEGIN

INSERT INTO salary_history VALUES

(:OLD.emp_id, :OLD.emp_salary, :NEW.emp_salary, SYSDATE); END; /

-- 更新员工工资

UPDATE employees SET emp_salary = 6000 WHERE emp_id = 1; -- 查询salary_history表的数据 SELECT * FROM salary_history; ```

通过以上练习题,我们可以加深对PL/SQL的理解和应用。PL/SQL是Oracle数据库中非常重要的一部分,掌握PL/SQL的知识对于数据库开发和管理非常有帮助。希望本文提供的PL/SQL练习题及答案能够对读者在学习和应用PL/SQL过程中起到一定的指导作用。

因篇幅问题不能全部显示,请点此查看更多更全内容