PASSTHRU 语句

PASSTHRU 语句对表达式求值,并将结果字符串作为数据库语句来执行。

SYNTAX
注:
  1. 主语法图的下半部分(要传递给 PASSTHRU 的 Expression 的第二种编码方法)描述了为向后兼容而保留的语法。

用途

PASSTHRU 语句的主要用途是发出对数据库的管理命令(例如,创建表)。
注: 不要使用 PASSTHRU 来调用存储过程,而要使用 CALL 语句。 这是因为 PASSTHRU 施加了限制(例如,您不能使用输出参数。)

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

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

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

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

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

数据库引用

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

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

处理错误

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

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

示例

以下示例在数据库 DSN1 中的模式“Shop”中创建“Customers”表。
PASSTHRU 'CREATE TABLE Shop.Customers (
  CustomerNumber INTEGER,
  FirstName VARCHAR(256),
  LastName VARCHAR(256),
  Street VARCHAR(256),
  City VARCHAR(256),
  Country VARCHAR(256)
)' TO Database.DSN1;
如在上一示例中一样,如果将 ESQL 语句指定为字符串文字,则必须在它两边加单引号。但如果将它指定为变量,则省略引号。例如:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XML.Data[] = PASSTHRU(myVar);
以下示例删除数据库 DSN1 中模式“Shop”中的“Customers”表。
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1;
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05100_