---
title: "支持数据库Spy中的SQL模板：使用参数的SQL查询"
date: 2017-11-16
categories:
  - development
  - tools
tags:
  - database-tool
  - databasespy
  - sql-query
description: Altova公司的DatabaseSpy是一款多数据库工具，它提供了强大的功能，可用于开发、执行和优化包含参数的复杂SQL查询。
---
Status: #blog

Tags:  #database-tool #databasespy #sql-query

Categories: [development](/blog/zh/category/development.md) | [database + sql](/blog/zh/category/database-sql.md)
# 支持数据库Spy中的SQL模板：使用参数的SQL查询

带有参数的SQL查询，也称为SQL模板，是一种灵活高效的解决方案，适用于重复性的数据报告需求。例如，它可以让用户轻松执行包含多个值集的复杂连接语句。Altova公司的数据库查询、设计和编辑工具DatabaseSpy，提供了强大的功能，用于开发、执行和优化带有参数的复杂SQL查询，即SQL模板。

在DatabaseSpy中，使用参数进行SQL查询的原型设计，甚至可以加速其他项目所需的查询的开发，例如MapForce中的数据库映射，或者MobileTogether跨平台移动应用中的数据库数据源。

![大数据支持](/blog/images/big-data-v2017.png)

<!--more-->

数据库侦察工具 [SQL 编辑器](https://www.altova.com/zh/databasespy/sql-editor) 以下“结果”窗口展示了一个查询，用于报告特定客户的所有特定产品的订单信息：

[![一个SQL查询，它连接了来自多个表的数据，并且不包含任何参数](/blog/images/SQL-query-without-parameters.png)](SQL-query-without-parameters.png)

这个查询可以通过替换产品名称“sprockets”和客户编号525为参数，从而变得更加通用。如您在下面的SQL编辑器窗口中看到的，查询的第6行和第7行分别用参数`:pname`和`:custnum`替代了产品和客户信息。

[![带有参数的SQL查询既灵活又高效](/blog/images/SQL-query-with-parameters.png)](SQL-query-with-parameters.png)

当通过SQL编辑器窗口左上角的黄色“执行”按钮执行带有参数的查询时，DatabaseSpy会弹出一个对话框，允许用户输入执行所需的参数值，然后在窗口右下部分显示生成的查询结果。

[![为带有参数的SQL查询提供值](/blog/images/SQL-query-result.png)](SQL-query-result.png)

DatabaseSpy 的 SQL 模板可以保存到专门的项目文件夹中，并可以动态执行。 上面展示的直接执行方式，如果用户已经知道所需的参数值，则适用。 然而，通常情况下，用户需要创建查询，以生成测试结果，从而探索未知的数据。 在执行测试查询后，用户可以选择结果表格中的值，并将这些值作为参数传递给存储在项目模板文件夹中的 SQL 模板。

一个新的 SQL 编辑器窗口会打开，其中会根据模板自动生成一个查询语句，并将选定的值赋给相应的参数。生成的查询语句会被执行，然后会显示结果表格。

[![通过示例传递数值，并执行带有参数的SQL查询](/blog/images/SQL-parameters-from-result.png)](SQL-parameters-from-result.png)

**将带有参数的SQL查询应用于其他项目**

在DatabaseSpy中创建任何带有参数的SQL查询后，它可以轻松地应用于其他项目，例如使用Altova的跨平台开发工具MobileTogether开发的移动应用程序 [快速移动应用开发](https://www.altova.com/zh/mobiletogether) (RMAD) - 缩写，具体含义需根据上下文确定。

例如，我们的示例查询可能只是一个复杂销售报告应用程序中的一个很小的一部分。移动开发人员只需将查询复制粘贴到 MobileTogether 设计器窗口中的 SQL 语句编辑器窗口中，并像这里所示一样定义参数值即可。

[![带有参数的SQL查询语句可以应用于许多其他项目](/blog/images/MobileTogether-SQL-Query.png)](MobileTogether-SQL-Query.png)

在The MobileTogether Designer中，开发者可以使用拖放式页面布局工具，创建一个编辑框，允许用户输入客户编号；同时，还可以创建一个下拉列表框，让用户选择产品名称，从而在应用程序运行时，设置SQL查询的参数值。

我们的示例查询，嵌入在移动应用程序中，在Android设备上会显示如下：

[![一个在安卓移动设备上运行的应用程序，它执行一个带有参数的SQL查询](/blog/images/SQL-result-in-mobile-app.png)](SQL-result-in-mobile-app.png)

MapForce 数据映射、转换和 ETL 工具包含一个类似于“数据库侦察工具”对话框的 SQL 编辑器对话框（如上图所示）。MapForce 的参数 [数据映射](https://www.altova.com/zh/mapforce) 这些信息可以在运行时提供，也可以在映射关系中内部生成。

本文中描述的所有数据库查询功能，包括使用参数创建SQL查询以及更多功能，都适用于以下数据库。DatabaseSpy甚至允许用户同时连接到多个不同类型的数据库，并可以比较它们之间的结构和内容。

**支持的数据库：**

- 火鸟
- IBM DB2 for iSeries® 系统
- IBM DB2®数据库系统
- Informix® (商标)
- Microsoft Access™ 数据库管理系统
- Microsoft® Azure SQL数据库服务
- Microsoft® SQL Server® 数据库系统
- MySQL®
- Oracle®
- PostgreSQL数据库系统
- Progress OpenEdge
- SQLite
- Sybase® (思贝)

（点击此处查看[每个数据库支持版本的详细列表](https://www.altova.com/zh/databasespy)。） 您可以免费试用[DatabaseSpy、MobileTogether或任何其他Altova产品](https://www.altova.com/zh/download)，试用期为30天。
