我正在编写一个简单的程序,将查询解析为两个桶:
1)没有结果集的人(如INSERT,UPDATE,CREATE)
2)和那些人(如SELECT)
据我了解,只要查询以SEL
或WITH
子字符串开头,它总是有结果集。它是否正确 ?我确信SEL
,但对WITH
不太确定。查询是否可能以WITH
开头并且没有结果集?
答案 0 :(得分:0)
在Java中(例如)
Connection conn = ... // connect here
if (conn.createStatement().execute( sql )) {
// it's a select statement
}
您的SQL也可以从评论开始并可以提交。另一个例子是匿名块:
BT;
select user;
ET;
答案 1 :(得分:0)
您将忽略“隐藏”此拆分中逻辑的SQL。例如,宏可以包含SELECT和/或DML。如果您有EXEC myMacro,则必须获取宏的DDL并对此进行解析。
我将尝试请求SQL解释的方法。在这种情况下,RDBMS接管了解析,您只需要扫描说明(最后)是将某些内容发送到客户端(它们将具有结果集)还是插入/合并到表中。