如何验证我的 PL/SQL 语法

问题描述 投票:0回答:2

抱歉我的英语不好。希望你能得到我想要的。

我有很多 *.sql 文件,我想编写一个程序来编译它们并通知我是否有任何问题(问题或错误)。

我的一个朋友为java编写了一个IDE,我记得他使用javac来生成错误代码。 另一方面,我见过 Visual Studio 或 Netbean IDE 会自动告诉您是否有错误。 所以现在我想知道有人知道如何使用 sql 文件做到这一点吗?

换句话说,我想为 SQL 文件(PL/SQL)编写一个编辑器来编译我的代码并告诉我错误是什么。

当我尝试在 SQL PLUS 中编译所有这些时,就会出现这个问题,太无聊了。

请帮助我...

plsql
2个回答
5
投票

.sql 文件可以包含许多不同的内容 - DDL、SQL 查询、DML、PL/SQL 匿名块,以及用于视图和存储过程/函数/包的

CREATE
命令。

您需要知道这些 .sql 文件中的内容。如果你只是在 SQL*Plus 中盲目地运行它们,你不知道它们会做什么 - 我可以给你我的主文件夹中的一组 .sql 脚本,你会发现你的数据库会处于非常糟糕的状态如果您只是随机运行它们,请说明 - 某些脚本创建/修改/删除表,或者删除或修改数据,某些脚本提交其更改(因此在运行脚本后发出 ROLLBACK 对您没有帮助),其他脚本启动或停止数据库:)

如果您知道所有 .sql 脚本只包含视图或存储过程、函数和/或包的

CREATE
命令,您可以从 SQL*Plus 命令行运行它们 - 您可以非常轻松地生成脚本依次运行它们 - 然后检查
USER_OBJECTS
/
ALL_OBJECTS
/
DBA_OBJECTS
是否有
STATUS = 'INVALID'
的任何内容,并查询
USER_ERRORS
是否有任何编译器错误。但请记住,即使这种方法也是破坏性的,因为它会覆盖您运行它们的数据库中的任何现有存储过程等。


0
投票

SQL*Plus 可以在命令行上运行。 因此,您可以像您朋友使用 javac 一样使用它。

> sqlplus username/password@connection_identifier @scriptToExecute.sql

请记住,您的操作可能会产生后果,因此您需要实现 sql 的回滚,或许还需要实现 ddl/dml 命令的临时命名。

或者,下载 Oracle 的免费 SQL Developer 工具,它已经可以完成所有这些工作。

© www.soinside.com 2019 - 2024. All rights reserved.