关于oracle:在jdbc中确定DDL语句

Determine DDL statement in jdbc

我正在编写一个执行不同sql语句(查询,dml,ddl,dcl)的程序。如何确定执行的语句(方法boolean Statement#execute(String s))是ddl还是dcl。我知道如何确定查询。当execute()方法返回true时,该语句是一个查询,当statement#execute()返回值为false时,该语句可以是dml,ddl或dcl。那么如何确定语句的类型呢?


结果的存在(execute() == true)不一定表示查询。例如在PostgreSQL中,DELETE语句也可以返回结果(使用returning子句时)。

要处理语句的所有结果或更新计数,您需要实现一个循环,该循环遵循getMoreResults()的Javadocs记录的准则:

There are no more results when the following is true:

// stmt is a Statement object
((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))