2013-02-19 54 views

回答

1

该架构一般不会做出很大的意义...

你可以,假设.SQL文件存储在数据库服务器上,编写使用UTL_FILE读取文件中的PL/SQL块,确定分隔符,然后使用动态SQL来执行每个单独的语句。但是,这将是一个相当大量的工作来获得正确的。同样,假设.SQL文件存储在数据库服务器上,您也可以编写一个Java存储过程,该存储过程调用主机操作系统,启动SQL * Plus,连接回数据库并执行。 SQL文件。这样做比尝试自己分析文件的内容要少。但它会涉及第二个会话和一个单独的可执行文件,这也增加了一些复杂性。

是否有一个原因,您不只是启动SQL * Plus,将它传递给.SQL文件,并让SQL * Plus运行? PL/SQL在这种情况下添加了什么?

+0

这个想法如何:我测试了创建Java程序,该程序使用Oracle方案读取.sql文件。但是,我对注释进入sql文件有问题。是否有可能创建从Java代码启动PL/SQL块的Java程序,然后PL/SQL块读取sql文件并创建Oracle方案。主要目的是创建Java独立应用程序,该应用程序通过网络安装Oracle方案或部署在Oracle服务器上。任何想法什么是最好的解决方案? – user1908169 2013-02-19 22:26:22

+0

@ user1908169 - PL/SQL在数据库服务器上运行,因此它只能访问数据库所具有的资源。如果您正在讨论运行安装程序的Java应用程序,那么该应用程序可能运行于数据库服务器之外的其他位置。所以尝试使用PL/SQL是没有意义的。如果这是一个您正在构建的产品,那么为它提供一个不同的输入文件似乎更合理,该输入文件以更容易解析的格式(比如XML文件)存储要运行的语句。 – 2013-02-19 22:31:18

+0

@ user1908169 - 然而,从安全角度来看,Oracle DBA将更愿意采用您提供并执行的.SQL文件,而不是授予他们必须为应用程序设置的任何Oracle数据库帐户以连接创建一堆对象的权限(如果你确实意味着创建一个意味着创建用户的模式,那就更加重要)。 – 2013-02-19 22:32:51