如何识别返回Teradata中结果集的查询?
问题描述:
我写一些简单的程序,解析查询到两个水桶:如何识别返回Teradata中结果集的查询?
1)那些没有结果集(如INSERT,UPDATE,CREATE谁)
2)和那些谁做的(如SELECT )
据我所知,只要查询以SEL
或WITH
子串开始,它总是有一个结果集。它是否正确 ?我相信SEL
,但不太确定WITH
。查询是否可能以WITH
开头,并且没有结果集?
答
在Java(例如)
Connection conn = ... // connect here
if (conn.createStatement().execute(sql)) {
// it's a select statement
}
你的SQL可与评论也开始并submittable。另一个例子是一个匿名块:
BT;
select user;
ET;
我相信你的假设是正确的关于'WITH'是'SELECT'而已。你不能在'INSERT','UPDATE','DELETE','CREATE'等中使用'With' ......事实上,在CTE之后唯一允许的关键字是'SELECT'和一些临时关键字,最终只会导致一个'SELECT'。但是,当您点击“USING”或“LOCKING”等关键字时,该解析可能会变得更加困难。 – JNevill
非常感谢你我完全忘了LOCKING。 – Pasha