Oracle Database PL/SQL exam prep covering block structure, variables, cursors, exceptions, procedures, functions, packages, triggers, dynamic SQL, and collections. Includes 59+ practice questions with explanations, a 120-minute exam format, and a 63% passing score.
1Z0-149 是 Oracle PL/SQL 开发的经典 OCP 考试 — 如果你在写存储过程、触发器、包的 Oracle 项目里工作,这张证直接对口;做应用层 Java/Python 开发的人不需要。
Unlock all certifications, courses & tools at a fraction of the cost
This page is structured for quick scanning first: exam format, fit, prep time, and the actual study scope.
Oracle Database: Program with PL/SQL (1Z0-149) 验证 PL/SQL 编程能力,63 题 / 120 分钟,及格线 63%(约 40 题),费用 $245 USD。这是 Oracle Database PL/SQL Developer Certified Professional (OCP) 的核心考试之一。
考试覆盖 PL/SQL 的全部核心功能:匿名块和命名块、变量声明和赋值、条件语句和循环、显式游标(Cursor)和隐式游标、异常处理(预定义异常 + 自定义异常 + PRAGMA EXCEPTION_INIT)、存储过程和函数、包(Package Spec + Package Body)、触发器(DML/DDL/Database Event/INSTEAD OF)、动态 SQL(EXECUTE IMMEDIATE/DBMS_SQL)。
PL/SQL 在云原生和微服务时代看似过时,但在银行核心系统(Oracle Financials/FLEXCUBE)、电信计费系统(Oracle BRM)、政府 ERP(Oracle E-Business Suite)中仍然是主力语言。这些系统的业务逻辑大量写在数据库存储过程里,短期内不会重写。
Salary ranges, target job titles, and the real career impact of holding Oracle 1Z0-149.
PL/SQL Developer 在澳洲的需求集中在金融(CBA/Westpac 的 Oracle Financials 团队)和政府部门(Service NSW、Defence)。Seek 上 "PL/SQL Developer" 年薪中位数约 $115K AUD。
1Z0-149 和 1Z0-071(SQL)组合可以获得 Oracle Database PL/SQL Developer OCP,这是 Oracle 开发方向的权威认证。单独 1Z0-149 不够,需要配合 SQL 考试。
不适合的人群:做前端/移动端/云原生微服务的开发者 — PL/SQL 是数据库内嵌的过程化语言,和你的日常工作没有交集。学 Python/Java 写 ORM 操作数据库的人也不需要 PL/SQL 认证。
A concrete week-by-week plan from past test-takers — not generic advice.
在 Oracle XE 或 Oracle Live SQL 上练习。DECLARE-BEGIN-EXCEPTION-END 块结构、变量声明(%TYPE/%ROWTYPE)、IF-THEN-ELSIF-ELSE、CASE、LOOP/WHILE/FOR 循环。重点练习显式游标(CURSOR FOR loop vs OPEN-FETCH-CLOSE 两种写法)和 REF CURSOR(动态游标)。
CREATE OR REPLACE PROCEDURE/FUNCTION 的参数模式(IN/OUT/IN OUT)和 NOCOPY hint。Package Spec(声明)和 Package Body(实现)的分离机制、Package 初始化块。触发器类型:BEFORE/AFTER + INSERT/UPDATE/DELETE 的 12 种组合、:NEW/:OLD 伪记录、INSTEAD OF 触发器(用于视图 DML)。触发器的执行顺序(Statement-level BEFORE → Row-level BEFORE → DML → Row-level AFTER → Statement-level AFTER)。
预定义异常(NO_DATA_FOUND/TOO_MANY_ROWS/ZERO_DIVIDE/DUP_VAL_ON_INDEX)的触发条件。PRAGMA EXCEPTION_INIT 绑定自定义异常到 Oracle 错误码。RAISE_APPLICATION_ERROR(-20000 到 -20999 范围)。EXECUTE IMMEDIATE 的 USING 和 INTO 子句。用 Enthuware 1Z0-149 或 Whizlabs 做 2 次模考。
What it actually took for real candidates to pass — prep time, scores, and lessons learned.
工作中天天写 PL/SQL 但考试比想象中细 — 触发器的执行顺序(Statement BEFORE → Row BEFORE → DML → Row AFTER → Statement AFTER)出了 3 道。Package 初始化块的执行时机(第一次调用包中任何元素时执行一次)也考了。
PL/SQL 的语法和 Java 差异很大 — 没有类和对象的概念,全是过程化编程。游标(Cursor)的概念对我来说最陌生,花了 3 周才理解显式游标 vs 隐式游标 vs REF CURSOR 的使用场景。
| Oracle 1Z0-149 | Oracle 1Z0-071 | Oracle 1Z0-082 | |
|---|---|---|---|
| Provider | Oracle | Oracle | Oracle |
| Level | 助理级 | 助理级 | 助理级 |
| Fee | $245 | $245 | $245 |
| Duration | 120 min | 120 min | 120 min |
| Question count | 63 | 73 | 68 |
| Validity | 0 yrs | 0 yrs | 0 yrs |
63 题 120 分钟,约 1.9 分钟/题。代码阅读题需要手动追踪变量值和游标状态。
RAISE_APPLICATION_ERROR 的错误码范围是 -20000 到 -20999,其他范围是 Oracle 保留的。考试可能给一个超出范围的错误码问"会发生什么"。
Package 题注意区分 Spec 和 Body — Spec 是接口(其他程序只能看到 Spec 中声明的元素),Body 是实现(可以包含 Spec 中未声明的私有元素)。
**%TYPE 和 %ROWTYPE 混淆** — %TYPE 取单个列的数据类型(v_name employees.first_name%TYPE),%ROWTYPE 取整行的结构(v_emp employees%ROWTYPE)。考试至少 2 道。
**触发器的 :NEW 和 :OLD 限制** — INSERT 触发器只有 :NEW(没有 :OLD),DELETE 触发器只有 :OLD(没有 :NEW),UPDATE 两者都有。在不存在的伪记录上引用字段会编译通过但运行时得到 NULL。
**EXCEPTION WHEN OTHERS 的位置** — WHEN OTHERS 必须是最后一个异常处理分支,放在其他异常前面会导致编译错误。
59+ questions, chapter-by-chapter learning, mock exams, wrong-question review, and AI tutor support live in the exam page.
Go to exam prepFrom $29 · 2 free chapters