可以从存储过程调用中下载结果集。例如,您目前可能有下表的 download_cursor:
CREATE TABLE MyTable ( pk INTEGER PRIMARY KEY NOT NULL, col1 VARCHAR(100) NOT NULL, col2 VARCHAR(20) NOT NULL employee VARCHAR(100) NOT NULL last_modified TIMESTAMP NOT NULL DEFAULT TIMESTAMP ) |
download_cursor 表脚本可能如下所示:
SELECT pk, col1, col2 FROM MyTable WHERE last_modified >= {ml s.last_table_download} AND employee = {ml s.username} |
如果希望对 MyTable 的下载使用更高级的业务逻辑,可以按如下所示创建自己的脚本,其中 DownloadMyTable 是一个存储过程,它接受两个参数(上次下载时间戳和 MobiLink 用户名)并返回结果集。(此示例使用 ODBC 调用约定以便可移植。):
{call DownloadMyTable( {ml s.last_table_download}, {ml s.username} )} |
下面是各个受支持的统一数据库的一些简单示例。有关全部详细信息,请查看统一数据库的文档。
以下示例适用于 SQL Anywhere、Adaptive Server Enterprise 和 Microsoft SQL Server。
CREATE PROCEDURE DownloadMyTable @last_dl_ts DATETIME, @u_name VARCHAR( 128 ) AS BEGIN SELECT pk, col1, col2 FROM MyTable WHERE last_modified >= @last_dl_ts AND employee = @u_name END |
对于 Oracle,可由存储过程中定义的 REF CURSOR 返回该结果集。但在使用 iAnywhere Solutions 12 - Oracle ODBC 驱动 时,REF CURSOR 参数应定义为存储过程参数列表中的最后一个参数。REF CURSOR 参数可定义为 OUT 或 IN OUT。以下存储过程适用于 Oracle。
create or replace procedure DownloadMyTable( v_last_dl_ts IN TIMESTAMP, v_user_name IN VARCHAR, v_ref_crsr OUT SYS_REFCURSOR ) As Begin Open v_ref_crsr For select pk, col1, col2 from MyTable where last_modified >= v_last_dl_ts and employee = v_user_name; End DownloadMyTable; |
接着,使用 ml_add_table_script 存储过程将对 DownloadMyTable 的调用定义为同步表 MyTable 的 download_cursor 脚本:
CALL ml_add_table_script( 'v1', 'MyTable', 'download_cursor', '{CALL DownloadMyTable( {ml s.last_table_download},{ml s.username} )}' ); |
对于 Oracle,请注意,DownloadMyTable 存储过程只用到两个参数(而非三个);MobiLink 服务器通过 REF CURSOR 读取结果集。REF CURSOR 定义为存储过程定义中的最后一个参数。
以下示例适用于 IBM DB2 LUW。
CREATE PROCEDURE DownloadMyTable( IN last_dl_ts TIMESTAMP, IN u_name VARCHAR( 128 ) ) LANGUAGE SQL MODIFIES SQL DATA COMMIT ON RETURN NO DYNAMIC RESULT SETS 1 BEGIN DECLARE C1, cursor WITH RETURN FOR SELECT pk, col1, col2 FROM MyTable WHERE last_modified >= last_dl_ts AND employee = u_name; OPEN C1; END; |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |