【问题标题】:How I can verify my PL/SQL syntax如何验证我的 PL/SQL 语法
【发布时间】:2010-05-17 04:37:16
【问题描述】:

对不起,我的英语不好。我希望你能得到我想要的。

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

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

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

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

请帮帮我...

【问题讨论】:

    标签: compiler-construction plsql


    【解决方案1】:

    .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 以获取任何编译器错误。但是请记住,即使这种方法也具有破坏性,因为它会覆盖您运行它们的数据库中的任何现有存储过程等。

    【讨论】:

    • ;)) 谢谢,我知道。实际上最近我参加了一个配置团队,他们在周末更新他们的软件,所以,我们只需要编译其他开发人员和客户使用新源的所有脚本......最后一位经理制作了一个批处理文件,将所有sql 代码如下: sta "x:\xxx\sss\kkk.sql" sta "xx:\xxx\sss\dddd.sql" sta "x:\xxx\sss\kss.sql" sta "xx:\xxx \sss\mmmdd.sql" ... 在运行这个 sql 文件之间我们收到错误,他输入 "/" 几次,错误就会解决,但我认为这项工作很无聊。在这种情况下,我想尝试编写一个程序这对我来说。有什么命令吗?
    • @rima,这是另一个问题吗? "/" 在 SQL*Plus 中执行 PL/SQL 块的命令。测试可能很无聊,但这是工作的一部分:)
    【解决方案2】:

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

    > sqlplus username/password@connection_identifier @scriptToExecute.sql
    

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2010-12-08
      • 1970-01-01
      • 2021-12-30
      • 2012-03-08
      • 2011-12-10
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多