提供 MobiLink 用户名。
在下表中,[说明] 部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见 SQL-Java 数据类型和 SQL-.NET 数据类型。
| 项 | 参数 | 说明 |
|---|---|---|
| 1 | ml_username | VARCHAR(128)。这是一个 INOUT 参数。 |
无。
MobiLink 服务器在调用脚本时以参数形式提供用户名,用户名由 MobiLink 客户端发送。在某些情况下,您需要使用另一个用户名。该脚本可用于修改在调用 MobiLink 脚本过程中使用的用户名。
ml_username 参数必须足够长以保存用户名。
modify_user 事件的 SQL 脚本必须作为存储过程实现。
下面的示例在 Adaptive Server Anywhere 统一数据库中运行。它通过使用名为 user_device 的映射表将远程数据库用户名映射到使用该设备的用户的 id。当同一个人拥有需要相同同步逻辑(根据该用户的名称或 id)的多个远程(如 PDA 和膝上型计算机)时,可以采用此技术。
call ml_add_connection_script(
'ver1',
'modify_user',
'call ModifyUser( ? )' )
CREATE PROCEDURE ModifyUser( INOUT u_name varchar(128) )
BEGIN
select user_name
into u_name
from user_device
where device_name = u_name
END下面的存储过程调用在同步脚本版本 ver1 时将名为 modifyUser 的 Java 方法注册为 modify_user 连接事件的脚本。
call ml_add_java_connection_script( 'ver1', 'modify_user', 'ExamplePackage.ExampleClass.modifyUser' )
下面是示例 Java 方法 modifyUser。它从数据库获取用户 ID,然后使用该 ID 设置用户名。
public void ModifyUser( InOutString io_user_name )
throws SQLException
{ Statement uid_select = curConn.createStatement();
ResultSet uid_result = uid_select.executeQuery(
"select rep_id from SalesRep where name = '" +io_user_name.getValue() + "' " ); uid_result.next(); io_user_name.setValue( java.lang.Integer.toString(uid_result.getInt( 1 )) uid_result.close(); uid_select.close(); return; }
下面的存储过程调用在同步脚本版本 ver1 时将名为 ModUser 的 .NET 方法注册为 modify_user 连接事件的脚本。
call ml_add_dnet_connection_script( 'ver1', 'modify_user', 'TestScripts.Test.ModUser' )
下面是调用 ModUser 的 C# 签名。
public void ModUser( string user )
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。