DBEXECUTEFIXED

DBEXECUTEFIXED 可替代支持参数的 DBEXECUTE。与 DBEXECUTE 不同,它可在云和内部部署环境下使用,并在自定义或扩展应用程序中使用。

SQL 语句被视为固定文本,因此不能直接引用变量。

如果语句位于不受保护的单元格中,则可更新返回的值,但与 DBEXECUTE 相比,无法添加新行。

注意

参数名称区分大小写。

语法

DBEXECUTEFIXED 公式有这些参数。

  1. 别名:这指定了 d/EPM Administration 中定义的关系数据连接。
  2. 选择语句:这用于从数据库中检索数据。这是标准的 SQL SELECT 命令。若要更新数据库,则查询必须包含主键。SQL SELECT 可从一行返回多个值,但 DBEXECUTEFIX 会忽略除第一个以外的所有值。因此,若要返回并写回一个不是主键的值,请确保主键不是由语句请求的第一个值。对于写回,包含查询的单元格必须不受到保护。
  3. 参数值:可使用单值和多值参数。在 SQL 语句中,使用 @[parameter_name] 引用单值参数。使用 @@[parameter_name] 引用多值参数。多值参数中的值必须以管道 (|) 字符分隔。
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})

参数名称自动指定为 p1p2 等。

示例

在此示例中,公式返回 ID 当前在rv_configs 报告变量中包含的值的项目名称。item.ID 是主键。

=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)

item.id 是主键。如果公式位于未受保护的单元格中并返回值,则可更新值:在此示例中,为项目名称。

注意

由于将整个 SQL 语句视为文本,因此无需将字符串值与 & 字符连接,因为这在这些 DBEXECUTE 公式中是必填项:

=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")

连接的语法不同,例如在第一个示例中,引用的值是数字,而第二个是文本。