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.以下代码的执行结果是什么?

```SQL
SELECT *
FROM employees
WHERE 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函数实现的功能是什么?

```SQL
UPDATE 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数据库的相关知识和技能。

数据运维技术 » Oracle 11g简单的考题尝试拾级考古(oracle11g简答题)