通过 Oracle 的 JDBC 驱动程序解析 SQL
我想测试给定的 SQL 语句在语法和语义上是否有效(即没有语法错误和字段拼写错误)。
对于大多数数据库,Connection.prepareStatement
和 PreparedStatement.getMetaData
就可以解决问题(没有例外 == 良好的查询)。不幸的是,Oracle 的最新驱动程序仅像这样解析 SELECT 查询,而不解析其他类型的查询。老司机甚至不会这样做。
Oracle 是否提供了一些其他工具来解析 SQL 语句?
I'd like to test whether given SQL statement is syntactically and semantically valid (ie. no syntax errors and no field misspellings).
For most databases Connection.prepareStatement
and PreparedStatement.getMetaData
would do the trick (no exception == good query). Unfortunately Oracle's newest driver only parses like this only SELECT queries, but not other kind of queries. Older drivers don't do even that.
Is there some other facility provided by Oracle for parsing SQL statements?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 Oracle DBMS_SQL 包来解析字符串中保存的语句。例如:
您可以将其包装到一个存储函数中,如果语句有效则返回 1,如果无效则返回 0,如下所示:
然后您可以像下面的 PL/SQL 示例一样使用它:
You can use the Oracle DBMS_SQL package to parse a statement held in a string. For example:
You could wrap that up into a stored function that just returned e.g. 1 if the statement was valid, 0 if invalid, like this:
You could then use it something like this PL/SQL example: