193

I'm reading a book about SQL. In that book there's the term Ad Hoc Query, which I don't understand.

What exactly is an ad hoc query?

4

11 回答 11

249

Ad hoc是拉丁语的“为此目的”。您可以将其称为“即时”查询或“就这样”查询。这是一种你只需在需要的地方随便输入的 SQL 查询

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;

...每次执行该行代码时,这是一个完全不同的查询,具体取决于myId. 与即席查询相反的是预定义查询,例如存储过程,您在其中创建了一个查询,用于从该表中进行选择(例如)的整个通用目的,并将 ID 作为变量传递。

于 2010-03-17T09:19:40.643 回答
29

Ad-Hoc Query 是在发出查询之前无法确定的查询。它是为了在需要时获取信息而创建的,它由动态构造的 SQL 组成,通常由桌面驻留的查询工具构造。

检查: http: //www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html

于 2013-08-13T08:56:08.443 回答
3

Ad-hoc 查询是为了从数据库服务器上可用的任何或多个合并表中提供特定记录集而创建的。这些查询通常用于一次性用途,并且可能不需要合并到任何存储过程中以在将来再次运行。

临时场景:您收到对具有一组唯一变量的特定数据子集的请求。如果没有可以提供必要结果的预先编写的查询,则必须编写 Ad-hoc 查询来生成记录集结果。

超越单一用途的即席查询是存储过程;即存储在数据库接口工具中的查询。然后可以在模块或宏中按顺序执行这些存储过程,以按需、按计划或由另一个事件触发来完成预定义的任务。

存储过程场景:每个月您都需要从相同的表集和相同的变量生成报告(这些变量可能是特定的预定义值、计算值(例如“当前月末”)或用户的输入值)。您将在第一次将过程创建为临时查询。在测试结果以确保准确性后,您可以选择部署此查询。然后,您可以将查询或一系列查询存储在模块或宏中,以便根据需要再次运行。

于 2019-11-26T08:36:31.623 回答
1

Ad-Hoc Query 是在发出查询之前无法确定的查询。它是为了在需要时获取信息而创建的,它由动态构造的 SQL 组成,通常由桌面驻留的查询工具构造。ad hoc 查询不驻留在计算机或数据库管理器中,而是根据数据用户的需要动态创建的。

在 SQL 中,即席查询是一种松散类型的命令/查询,其值取决于某个变量。每次执行命令时,结果都是不同的,具体取决于变量的值。它无法预先确定,通常属于动态编程 SQL 查询。即席查询是短暂的,是在运行时创建的。

于 2017-11-10T04:56:55.807 回答
0

即席查询是那些尚未定义但不需要定期使用的查询,因此它们不包含在典型的报告或查询集中

于 2013-12-25T09:41:02.117 回答
0

还想补充一点,即席查询容易受到 SQL 注入攻击。我们应该尽量避免使用它,而是使用参数化的 SQL(如 Java 中的 PreparedStatement)。

于 2013-06-05T16:04:50.207 回答
0

即席查询-

  • 这种类型的查询是为“特定目的”而设计的,这与预定义的查询形成对比,预定义的查询在每次执行时都具有相同的输出值。
  • 每次执行一个即席查询命令,但结果不同,具体取决于变量的值。
  • 它无法预先确定,通常属于动态编程 SQL 查询。
  • 即席查询是短暂的,是在运行时创建的。
于 2020-11-20T08:58:07.610 回答
0

Ad-hoc Statments 只是 T-SQL 语句,它有一个 Where 子句,而 Where 子句实际上可以有如下文字:

Select * from member where member_no=285;

或变量:

declare @mno INT=285;
Select * from member where member_no=@mno
于 2020-03-31T11:37:46.413 回答
-4

即席查询是:

  1. 预先计划的问题。
  2. 预先安排的问题。
  3. 一时冲动的问题。
  4. 不会返回任何结果的问题。
于 2014-07-15T06:02:14.977 回答
-6

即席查询是一种计算机定义。这意味着此查询是专门设计用于在仅需要时获取任何信息。预定义。参考这个https://www.youtube.com/watch?v=0c8JEKmVXhU

于 2017-01-10T20:17:15.033 回答
-7

在 Sql Server 中,“Ad Hoc Query”也用于 Ad Hoc 分布式查询。这些是通过 OpenRowset 或 OpenDatasource 在其他服务器上的即席查询。仅在配置后才允许使用 Ad Hoc 分布式查询。这是一个服务器配置选项。

于 2012-08-21T09:45:46.983 回答