Oracle 11g简单的考题尝试拾级考古(oracle11g简答题)
Oracle 11g简单的考题——尝试拾级考古
当今数据库技术日新月异,但作为一名程序员,想要获取较好的职位和薪资,Oracle数据库仍是一门必须掌握的技术。近日,笔者尝试了一些Oracle 11g简单的考题,希望通过这篇文章,与大家分享一下自己的心得体会。
1.以下代码中哪些变量在程序运行过程中读取用户输入的值,导致该程序易受到SQL注入攻击?
“`SQL
DECLARE
v_name VARCHAR2(50);
v_city VARCHAR2(50);
BEGIN
v_name := ‘&input_name’;
v_city := ‘&input_city’;
INSERT INTO customers
(id, name, city)
VALUES
(seq_customers.NEXTVAL, v_name, v_city);
END;
答:变量v_name和v_city,在程序运行时读取用户输入的值,因此易受到SQL注入攻击。
2.以下代码的执行结果是什么?
```SQLSELECT *
FROM employeesWHERE hire_date >= '01-JAN-1999'
AND hire_date
答:查询结果为在1999年雇用的员工信息。
3.以下代码是否会创建一个触发器,如果会,那么这个触发器实现的功能是什么?
“`SQL
CREATE OR REPLACE TRIGGER audit_changes
AFTER INSERT OR UPDATE OR DELETE ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_trl
(employee_id, change_type, change_date)
VALUES
(:OLD.employee_id, ‘D’, SYSDATE);
END;
答:这个代码会创建一个触发器,作用是在每次对employees表进行插入、修改或删除操作后,自动记录旧数据的employee_id、变更类型、变更日期并保存在audit_trl表中。
4.以下代码中的REPLACE函数实现的功能是什么?
```SQLUPDATE employees
SET eml = REPLACE(eml, '@example.com', '@company.com')WHERE hire_date >= '01-JAN-2002';
答:这个代码的作用是更新在2002年及以后入职的员工的eml地址,将原先的“@example.com”替换为“@company.com”。
5.以下代码会显示当前会话使用的SCHEMA的名称,试着用自己的语言描述一下这个代码实现的方法。
“`SQL
SELECT SYS_CONTEXT(‘USERENV’, ‘CURRENT_SCHEMA’) FROM dual;
答:这个代码用SYS_CONTEXT函数获取当前会话的SCHEMA,并在dual表中显示其名称。
这些考题都比较简单,但对于初学者来说还是有一定难度的。希望大家能够通过学习和练习,逐渐掌握Oracle数据库的相关知识和技能。