PASSTHRU 函数

PASSTHRU 函数对表达式求值,并将结果字符串作为数据库语句执行,返回一个结果集。

PASSTHRU 函数类似于 PASSTHRU 语句,PASSTHRU 语句 中有关于 PASSTHRU 语句的描述。

SYNTAX
注:
  1. 主语法图的下半部分描述了为向后兼容而保留的语法。

用途

PASSTHRU 函数主要用于向数据库发出目前代理还不支持的复合 SELECT 语句。(代理目前不支持的复合 SELECT 语句示例包括那些包含 BROUP BY 或 HAVING 子句的 SELECT 语句)。

对第一个表达式求值,得出的字符串传递给 DatabaseReference 指向的数据库(在 TO 子句)以执行。如果未指定 TO 子句,则使用节点的 data source 属性指向的数据库。

在数据库字符串中使用问号(?)表示参数。参数值由 VALUES 子句提供。

如果指定了 VALUES 子句,则对其表达式求值,并作为参数传递给数据库;(即,它们的值替代数据库语句中的问号)。

如果只有一个 VALUE 表达式,则结果不一定是列表。如果它是列表,则列表的标量值将替换问号。如果它不是列表,则单个标量值会替换数据库语句中的(单个)问题。如果有多个 VALUE 表达式,则应该没有表达式对列表求值。从而它们的标量值将替换问号。

由于数据库语句是由用户程序构造的,因此不绝对需要使用参数标记(即,问号)或 VALUES 子句,因为该程序可以将整个数据库语句作为文字字符串提供。 不过,请尽可能使用参数标记,因为这会减少需要准备并存储在数据库和代理中的不同语句的数量。

数据库引用

数据库引用是用于引用消息树的字段引用的特殊情况。它由单词“Database”及后面的数据源名称(即,数据库实例的名称)构成。

您可以直接指定数据源名称,或通过括在花括号({...})中的表达式进行指定。直接指定的数据源名称遵守名称替代。即,所用名称如果已声明为已知名称,则会使用已声明名称的值而不是名称本身(请参阅DECLARE 语句)。

处理错误

PASSTHRU 操作过程中有可能会发生错误。例如,数据库可能不可操作,或者语句可能无效。在这些情况下,除非节点将其数据库发生错误时抛出异常属性设置为 FALSE,否则将抛出异常。这些异常设置相应的 SQL 代码、状态、本机错误和错误文本值,并且可以由错误处理程序来处理(请参阅 DECLARE HANDLER 语句)。

有关处理数据库错误的更多信息,请参阅捕获数据库状态

示例

以下示例对数据库 DSN1 中 “Schema1” 模式的表 “Table1” 执行 SELECT 语句,将两个参数传递给 WHERE 子句,并要求结果集以升序的方式按名称排列。结果集被指定到 SelectResult 文件夹:
SET OutputRoot.XML.Data.SelectResult.Row[] =
  PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name =
           ? ORDER BY Name'
   TO Database.DSN1
   VALUES ('Name1', 'Name4'));
相关概念
ESQL 概述
相关任务
正在开发 ESQL
相关参考
PASSTHRU 语句
杂项 ESQL 函数
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05890_