抱歉,我的英语不好。我希望你能得到我想要的东西。
我有很多* .sql文件,我想编写一个程序来编译它们,并告诉我是否有任何问题(问题或错误)。
我的一个朋友为java编写了一个IDE,因为我记得他使用javac来生成错误代码。另一方面,我已经看到IDEs Visual Studio或Netbean会自动告诉你是否有错误。所以现在我想知道任何人都知道如何用sql文件做到这一点?
换句话说,我想编写一个SQL文件编辑器(PL / SQL)来编译我的代码并告诉我我的错误是什么。
当我尝试在SQL PLUS中编译所有这些问题时会出现此问题,这太无聊了。
请帮帮我......
答案 0 :(得分:4)
.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
的任何内容编译器错误。但请记住,即使这种方法具有破坏性,因为它会覆盖您运行它们的数据库中的任何现有存储过程等。
答案 1 :(得分:0)
SQL * Plus可以在命令行上运行。因此,您可以使用类似于朋友使用javac的方式使用它。
> sqlplus username/password@connection_identifier @scriptToExecute.sql
请记住,您的操作可能会产生影响,因此您需要实现sql的回滚以及ddl / dml命令的临时命名。
或者,也可以下载已经完成所有操作的Oracle免费SQL Developer工具。