可用于记录错误以及 handle_error 脚本选择的操作。
在下表中,[说明] 部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见 SQL-Java 数据类型和 SQL-.NET 数据类型。
只有当未指定任何后续参数时,事件参数才是可选的。例如,如果要使用参数 2,您必须使用参数 1。
| 项 | 参数 | 说明 |
|---|---|---|
| 1 | action_code | INTEGER。此参数是强制性的。 |
| 2 | error_code | INTEGER。如果未指定以下任何参数,则此参数是可选的。 |
| 3 | error_message | TEXT。如果未指定以下任何参数,则此参数是可选的。 |
| 4 | ml_username | VARCHAR(128)。如果未指定以下任何参数,则此参数是可选的。 |
| 5 | table | VARCHAR(128)。此参数是可选的。 |
无。
该脚本可用于记录错误以及 handle_error 脚本选择的操作。不管是否定义了 handle_error 脚本,此脚本都在 handle_error 事件之后执行。在与同步连接(管理/信息连接)不同的数据库连接上,它总是在其自己的事务中执行。
错误代码和错误消息可用于标识错误的性质。针对导致当前错误的 SQL 操作,对错误处理脚本的最后一次调用将返回动作代码值。
如果错误是作为同步的一部分发生的,则提供用户名。否则该值为空。
如果在操作某一特定表时发生错误,则提供表名称。否则该值为空。表名是远程数据库中表的名称。该名称在统一数据库中是否存在直接对应的名称取决于同步系统的设计。
下面的示例在 Adaptive Server Anywhere 统一数据库中运行。它将行插入用于记录同步错误的表中。
call ml_add_connection_script(
'ver1',
'report_error',
'insert into sync_error(
action_code,
error_code,
error_message,
user_name,
table_name )
values( ?, ?, ?, ?, ? )' )下面的存储过程调用在同步脚本版本 ver1 时将名为 reportError 的 Java 方法注册为 report_error 连接事件的脚本。
call ml_add_java_connection_script( 'ver1', 'report_error, 'ExamplePackage.ExampleClass.reportError' )
下面是示例 Java 方法 reportError。它使用 MobiLink 提供的 JDBC 连接将错误记录到表中。它还将设置动作代码。
public String reportError(
ianywhere.ml.script.InOutInteger actionCode,
int errorCode, String errorMessage, String user,
String table )
throws java.sql.SQLException
{ // insert error information in a table
JDBCLogError( _syncConn, errorCode, errorMessage,
user, table );
actionCode.setValue( getActionCode( errorCode ) );
return( null ); }SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。