我应该在运行 Statement.executeUpdate 方法之前从 SQL/PLSQL 文件内容中删除注释吗
Posted
技术标签:
【中文标题】我应该在运行 Statement.executeUpdate 方法之前从 SQL/PLSQL 文件内容中删除注释吗【英文标题】:Should I strip comments from SQL/PLSQL file contents before running Statement.executeUpdate method 【发布时间】:2019-12-04 11:43:38 【问题描述】:我有一个程序,它采用一组 sql/plsql 文件,主要包含 DDL,并在打开与数据库的连接后执行其内容。
try (Connection connection = DriverManager.getConnection(jdbcUrl, username, passwd))
if (connection != null)
for (String sqlFile : sqlFiles)
Statement statement = connection.createStatement();
List<String> sqls = readFile(sqlFile);
for (String sql : sqls)
statement.executeUpdate(sql);
catch (SQLException ex)
// readFile(String fileName) returns the list of queries separated by "/" for .plsql and ";" for .sql files
我在 *** 中看到了很多关于如何删除单行和多行 cmets 的问题。但是,当我使用包含 cmets(多行和单行)的文件进行测试时,我没有遇到任何问题,并且脚本正在正确执行。
那么,我可以在执行 Statememt.executeUpdate() 方法之前将 cmets 保存在 sql 字符串中吗?即使它现在可以很好地处理测试数据,我以后还会遇到问题吗?
【问题讨论】:
如果它有效,为什么你认为它无效?另外,您是在谈论评论+查询还是查询中的评论,还是孤立的评论?我希望第一个可以正常工作(对于大多数数据库系统,如果不是全部的话),我不太确定最后一个。 不需要移除 cmets,Oracle 可以毫无问题地处理它 【参考方案1】:您不必从脚本中删除 cmets,只需确保您已正确注释所有应避免失败的内容。
如果您需要更多信息,这里有一些关于 cmets 的优秀 Oracle 文档:
https://docs.oracle.com/cd/B12037_01/server.101/b10759/sql_elements006.htm#BEGIN
【讨论】:
以上是关于我应该在运行 Statement.executeUpdate 方法之前从 SQL/PLSQL 文件内容中删除注释吗的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 __main__.py 中使用啥形式的导入,然后我应该如何运行项目?
长时间运行的任务,我应该在另一个线程或另一个进程中运行它们吗? [复制]