PLSQL官方下载、安装和使用完全指南
PL/SQL 官方下载、安装和使用完全指南
PL/SQL(Procedorial Language/Structured Query Language)是 Oracle 数据库的专有过程化扩展语言,用于在 Oracle 数据库中编写存储过程、函数、包、触发器等程序单元。它无缝集成 SQL,提供条件判断、循环、异常处理等编程功能,广泛应用于数据库应用开发。本指南基于 Oracle 官方文档和工具(截至 2025 年 10 月),聚焦免费官方路径:使用 Oracle SQL Developer(免费 IDE,支持 PL/SQL 开发、调试)和 Oracle Database Express Edition (XE)(免费数据库,用于本地测试)。如果您需要商业版数据库,请访问 Oracle 支持门户。
注意:PL/SQL 不是独立产品,而是 Oracle 数据库的一部分。开发需要连接到 Oracle 数据库实例。商业第三方工具如 Allround Automations 的 PL/SQL Developer 提供 30 天试用,但本指南优先官方免费工具。
1. 前提条件
- 操作系统:Windows、macOS 或 Linux(SQL Developer 支持跨平台)。
- 硬件:至少 4GB RAM、2GHz CPU(推荐 8GB+)。
- 网络:需 Oracle 账户(免费注册)下载软件。
- Java:SQL Developer 需要 JDK 17(Oracle 官方推荐)。
- Oracle 数据库:本地开发需安装 XE,或使用 Oracle Cloud Always Free 实例(免费)。
2. 官方下载
所有下载免费,但需 Oracle 账户登录。访问 Oracle 下载中心,搜索相关产品。
组件 | 描述 | 下载链接 | 文件大小 | 支持平台 |
---|---|---|---|---|
Oracle SQL Developer | 免费 IDE,用于编写、调试 PL/SQL。包含 PL/SQL 编辑器、调试器、查询工具。 | SQL Developer 下载页 | ~25MB(不含 JDK) | Windows、macOS、Linux |
Oracle JDK 17 | SQL Developer 运行所需 Java(如果未安装)。 | Oracle JDK 下载 | ~200MB | 跨平台 |
Oracle Database XE 23ai | 免费本地数据库,支持 PL/SQL 开发(Express Edition,限 12GB 用户数据)。 | Database 下载页(选择 XE 版本) | ~5GB | Windows、Linux |
PL/SQL 文档 | 官方手册,包括语法参考。 | PL/SQL 语言参考 | PDF/HTML | – |
下载步骤:
- 注册/登录 Oracle 账户。
- 对于 SQL Developer:选择“Windows 64-bit with JDK”或“无 JDK”版本(推荐带 JDK 的 zip 包)。
- 对于 Database XE:选择“Oracle Database 23ai Express Edition for Windows x64”。
3. 安装指南
安装顺序:JDK → SQL Developer → Database XE(可选,本地测试用)。
3.1 安装 Oracle JDK 17
- 下载 JDK 安装包(.exe for Windows,.dmg for macOS,.tar.gz for Linux)。
- Windows:双击 .exe,遵循向导安装(默认路径 C:\Program Files\Java\jdk-17)。
- macOS:打开 .dmg,拖拽到 Applications。
- Linux:解压 tar.gz 到 /opt/java,设置环境变量:
export JAVA_HOME=/opt/java/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
- 验证:命令行运行
java -version
,应显示 “openjdk version 17”。
3.2 安装 Oracle SQL Developer
- 下载 zip 包,解压到新文件夹(如 C:\sqldeveloper)。
- Windows:双击
sqldeveloper.exe
(带 JDK 版本无需额外配置)。 - macOS/Linux:运行
./sqldeveloper.sh
,若提示 JDK 路径,输入 JDK 安装目录。 - 无需管理员权限。首次启动会提示设置 JDK 路径(如果未检测到)。
- 验证:启动后看到欢迎界面,即成功。
常见问题:
- “找不到 JDK”:手动指定路径(Tools > Preferences > Environment)。
- Windows DLL 错误:确保 PATH 中 64-bit msvcr100.dll 优先(复制到 sqldeveloper\bin)。
3.3 安装 Oracle Database XE(可选,本地数据库)
- 下载 .zip 或 .rpm,解压。
- Windows:
- 以管理员运行 setup.exe。
- 选择安装路径(默认 C:\app\oracle)。
- 设置密码(SYS/SYSTEM 用户)。
- 安装后,服务自动启动。
- Linux:
sudo rpm -ivh oracle-database-xe-23c-1.0-1.x86_64.rpm
sudo /etc/init.d/oracle-xe-23c configure # 配置密码
- 验证:浏览器访问 http://localhost:8080,登录 SYS 用户。或命令行
sqlplus sys/password@XE as sysdba
。 - 云替代:注册 Oracle Cloud Free Tier,创建 Always Free Autonomous Database(无需安装,支持 PL/SQL)。
卸载:使用控制面板(Windows)或 rpm -e(Linux)。
4. 配置和连接
- 启动 SQL Developer。
- 创建连接(Connections 面板右键 > New Connection):
- 名称:如 “Local XE”。
- 主机名:localhost(本地)或云 IP。
- 端口:1521(默认)。
- SID/Service Name:XE(本地)或云服务名。
- 用户名/密码:hr/hr(示例 schema,安装后解锁:ALTER USER hr ACCOUNT UNLOCK;)。
- 测试连接:点击 “Test”,成功后保存。
- 启用 DBMS Output(用于 PL/SQL 输出):View > DBMS Output,连接后点击 + 添加连接。
云连接示例:在 Oracle Cloud,获取 Wallet 文件(.zip),导入 SQL Developer(Tools > Preferences > Database > Advanced > Use OCI Driver)。
5. 使用指南
PL/SQL 在 SQL Developer 中通过 Worksheet(SQL 工作表)编写和执行。支持语法高亮、自动补全、调试。
5.1 基本语法回顾
PL/SQL 代码以块结构组织:
DECLARE -- 声明部分(变量、游标等)
BEGIN -- 执行部分(SQL、逻辑)
EXCEPTION -- 异常处理
END; -- 结束
5.2 编写和执行简单 PL/SQL 块
- 打开新 Worksheet(绿色 + 图标),选择连接。
- 输入匿名块示例(打印 Hello World):
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, PL/SQL World!');
END;
/
- 执行:按 F5(脚本模式)或 Ctrl+Enter(语句模式)。输出在 DBMS Output 面板。
- 结果:控制台显示 “Hello, PL/SQL World!”。
5.3 创建存储过程
- 右键连接 > New > Procedure。
- 输入代码示例(计算两个数之和):
CREATE OR REPLACE PROCEDURE add_numbers(p_a NUMBER, p_b NUMBER, p_result OUT NUMBER)
AS
BEGIN
p_result := p_a + p_b;
DBMS_OUTPUT.PUT_LINE('Sum: ' || p_result);
END;
/
- 编译:Ctrl+F7 或点击 Compile。无错误则成功。
- 执行:新 Worksheet 输入:
DECLARE
v_result NUMBER;
BEGIN
add_numbers(5, 3, v_result);
END;
/
输出:Sum: 8。
5.4 创建函数
- 右键 > New > Function。
- 示例(字符串长度):
CREATE OR REPLACE FUNCTION get_length(p_str VARCHAR2) RETURN NUMBER
AS
BEGIN
RETURN LENGTH(p_str);
END;
/
- 调用:
SELECT get_length('Hello') FROM DUAL;
(结果:5)。
5.5 调试 PL/SQL
- 右键过程/函数 > Compile for Debug(启用调试)。
- 设置断点:点击行号左侧。
- 右键 > Debug > 选择主程序。
- 运行:F9。使用 F7(步入)、F8(步过)、F5(继续)控制执行。
- 查看变量:Debug 面板显示值,可修改。
5.6 高级使用
- 包(Package):New > Package。规范(spec)和体(body)分离,提高模块化。
- 触发器(Trigger):New > Trigger。示例:AFTER INSERT ON table。
- 游标和批量处理:使用 FOR 循环处理查询结果,提高性能。
- 动态 SQL:EXECUTE IMMEDIATE 用于运行时构建 SQL。
- 性能优化:使用 Explain Plan(F6)分析 SQL。
- 版本控制:集成 Git(Team > Git)。
示例完整脚本(批量插入数据):
DECLARE
CURSOR c_emp IS SELECT * FROM employees;
v_count NUMBER := 0;
BEGIN
FOR rec IN c_emp LOOP
INSERT INTO emp_log VALUES (rec.employee_id, SYSDATE);
v_count := v_count + 1;
END LOOP;
COMMIT;
DBMS_OUTPUT.PUT_LINE('Inserted: ' || v_count || ' records.');
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END;
/
6. 常见问题与故障排除
问题 | 原因 | 解决方案 |
---|---|---|
ORA-01017: 无效用户名/密码 | 连接凭证错误 | 检查用户名/密码,解锁 schema(ALTER USER username IDENTIFIED BY password ACCOUNT UNLOCK;)。 |
TNS: 无监听程序 | 数据库未启动 | Windows 服务管理器启动 OracleServiceXE;Linux: sqlplus / as sysdba; STARTUP; 。 |
PL/SQL 编译错误 | 语法问题 | 检查分号、END;。使用 Ctrl+Shift+K 格式化代码。 |
无输出 | DBMS_OUTPUT 未启用 | View > DBMS Output > + 连接 > Set Serveroutput On。 |
调试失败 | 未编译为 Debug | 右键 > Compile for Debug。需 DBA 权限(GRANT DEBUG ON schema.* TO user;)。 |
内存不足 | 大型脚本 | 增加 JVM 内存(sqldeveloper.conf 编辑 -Xmx)。 |
7. 学习资源
- 官方教程: PL/SQL for Developers(视频和练习)。
- 文档: PL/SQL 用户指南。
- 社区: Oracle Forums、Stack Overflow。
- 书籍:Oracle PL/SQL Programming(Steven Feuerstein)。
- 在线练习:Oracle Live SQL(免费云环境)。
此指南覆盖从零到高级使用。如果您使用云数据库或特定版本,请提供细节以进一步定制!