Sql 如何识别在Teradata中返回结果集的查询?

Sql 如何识别在Teradata中返回结果集的查询?,sql,teradata,Sql,Teradata,我正在编写一些简单的程序,将查询解析为两个bucket: 1) 没有结果集的用户(如插入、更新、创建) 2) 以及那些这样做的人(如SELECT) 据我所知,只要查询以SEL或子字符串开头,它总是有一个结果集。这是正确的吗?我对SEL有把握,但对和的关系没有把握。查询是否可能以with开头,并且没有结果集 在Java中(例如) 您的SQL也可以以注释开始,并且是可提交的。另一个示例是匿名块: BT; select user; ET; 您忽略了“隐藏”此拆分中逻辑的SQL。例如,宏可以包含

我正在编写一些简单的程序,将查询解析为两个bucket:

1) 没有结果集的用户(如插入、更新、创建)

2) 以及那些这样做的人(如SELECT)

据我所知,只要查询以
SEL
子字符串开头,它总是有一个结果集。这是正确的吗?我对
SEL
有把握,但对
的关系没有把握。查询是否可能以
with
开头,并且没有结果集

在Java中(例如)

您的SQL也可以以注释开始,并且是可提交的。另一个示例是匿名块:

BT;
  select user; 
ET;
您忽略了“隐藏”此拆分中逻辑的SQL。例如,宏可以包含SELECT和/或DML。如果您有一个EXEC myMacro,您必须获取该宏的DDL并解析该宏


我会尝试请求解释SQL的方法。在这种情况下,RDBMS将接管解析,您只需扫描数据库,解释是(在最后)将某个内容发送到客户端(它们将有一个resultset)还是插入/合并到表中

我相信你关于
的假设是正确的,因为
只是
选择
。您不能将
一起使用
插入
更新
删除
创建
等。。。事实上,CTE后唯一允许的关键字是
SELECT
,以及一些临时关键字,它们最终只会导致
SELECT
。当你点击诸如“使用”或“锁定”之类的关键字时,这种解析可能会变得更加困难。非常感谢你,我完全忘记了锁定。
BT;
  select user; 
ET;