什么是Ad Hoc查询?

时间:2010-03-17 09:15:32

标签: sql adhoc-queries

我正在读一本关于SQL的书。在那本书中有 Ad Hoc Query 这个词,我不明白。

什么是即席查询?

11 个答案:

答案 0 :(得分:205)

Ad hoc 是拉丁语,用于“为此目的”。您可以将其称为“即时”查询,或“只是这样”查询。这是一种SQL查询,你只需要松散地输入你需要它的地方

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

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

答案 1 :(得分:23)

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

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

答案 2 :(得分:2)

还想补充一点,ad hoc查询容易受到SQL注入攻击。我们应该尽量避免使用它并使用参数化的SQL(like PreparedStatement in Java)。

答案 3 :(得分:1)

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

  

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

存储过程是一次性使用的临时查询;即存储在数据库界面工具中的查询。然后,可以在模块或宏中依次执行这些存储过程,以按需,按计划或由其他事件触发来完成预定义的任务。

  

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

临时语句只是T-SQL语句,它具有Where子句,而Where子句实际上可以具有像这样的文字:

Select * from member where member_no=285;

或变量:

declare @mno INT=285;
Select * from member where member_no=@mno

答案 7 :(得分:0)

即席查询-

  • 这种查询是为“特殊目的”设计的,这与预定义查询相反,该预定义查询在每次执行时具有相同的输出值。
  • 每次都执行一个临时查询命令,但是结果取决于变量的值而有所不同。
  • 它是无法预先确定的,通常在动态编程SQL查询下进行。
  • 临时查询是短暂的,并且是在运行时创建的。

答案 8 :(得分:-3)

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

答案 9 :(得分:-4)

在Sql Server中,“Ad Hoc Query”也用于Ad Hoc Distributed Queries。这些是通过OpenRowset或OpenDatasource在其他服务器上进行的即席查询。只有在配置后才允许使用Ad Hoc Distributed Queries。这是服务器配置选项。

答案 10 :(得分:-4)

Ad-Hoc查询是:

  1. 预先计划好的问题。
  2. 预先安排的问题。
  3. 当下问题的刺激。
  4. 不会返回任何结果的问题。