2013-02-18 30 views
3

我正在构建一个用户界面,以便能够在SQL Server数据库上执行SQL语句,在SQL Server 2008 R2上兼容。我需要能够确定每个语句是否可能返回一个数据集,或者是否只需要执行它。在Delphi中,TADOQuery由数据集的Open/CloseExecSQL组成。我需要根据SQL语句的第一个字自动确定使用哪一个。SQL语句的所有可能的首字是什么?

如何根据声明中的第一个词来确定我应该调用哪种方法?我需要知道每个可能的单词,以及基于每个单词的方法。

+7

让我们不要低估,因为我们知道答案是“你不能”。这是一个合法的问题。 – siride 2013-02-18 01:18:40

+2

我的猜测是SELECT返回行,而其他命令*可能*返回数据。否则,您需要准备该语句,并从结果列定义中查看是否有要检索的数据。让DB引擎为你解析SQL! – 2013-02-18 06:40:28

回答

8

这在一般意义上是不可能的。 EXEC存储过程名称例如可以让eithers返回一个结果集或不是,这取决于proc的写法。根据通话的语法,无法知道它是一个还是另一个。

+3

为了补充说明,即使'update' /'delete' /'insert'可能会返回行,如果再加上'output'。 – GSerg 2013-02-18 01:15:09

+1

而“WITH”可以是查询或DML语句的前缀。 – RBarryYoung 2013-02-18 01:20:05

+1

存储过程可能会返回多个结果集。 – HABO 2013-02-18 02:27:49

相关问题