目录

Search

  1. 前言
  2. 使用转换
  3. 汇总器转换
  4. 自定义转换
  5. 自定义转换函数
  6. 数据屏蔽转换
  7. 数据屏蔽示例
  8. 表达式转换
  9. 外部过程转换
  10. 筛选器转换
  11. HTTP 转换
  12. Identity Resolution 转换
  13. Java 转换
  14. Java 转换 API 引用
  15. Java 表达式
  16. Java 转换示例
  17. 联接器转换
  18. 查找转换
  19. 查找缓存
  20. 动态查找缓存
  21. 规范器转换
  22. 等级转换
  23. 路由器转换
  24. 序列生成器转换
  25. 排序器转换
  26. 源限定符转换
  27. SQL 转换
  28. 在映射中使用 SQL 转换
  29. 存储过程转换
  30. 事务控制转换
  31. 联合转换
  32. 非结构化数据转换
  33. 更新策略转换
  34. XML 转换

转换指南

转换指南

使用行

使用行

集成服务可以将单个行传递到自定义转换过程或数组中的行块。您可以编写过程代码以指定过程接收一行还是行块。过程接收行块时,可以提高性能:
  • 可以降低集成服务和过程执行的函数调用数量。集成服务调用输入行通知函数的次数变少,过程调用输出通知函数的次数也变少。
  • 可以增加数据的内存访问区域空间。
  • 可以编写过程代码以针对数据块而非每行数据执行算法。
默认情况下,该过程每次接收一行数据。要接收行块,必须包括 INFA_CTSetDataAccessMode() 函数,以便将数据访问模式更改为基于数组。当数据访问模式为基于数组时,必须使用基于数组的数据处理和行策略函数,才能访问和输出数据。当数据访问模式为基于行时,必须使用基于行的数据处理和行策略函数,才能访问和输出数据。
所有基于数组的函数均使用前缀 INFA_CTA。所有其他函数均使用前缀 INFA_CT。
请使用以下步骤编写过程代码,以访问行块:
  1. 在过程初始化期间调用 INFA_CTSetDataAccessMode(),以将数据访问模式更改为基于数组。
  2. 在创建被动自定义转换时,还可以在过程初始化期间调用 INFA_CTSetPassThruPort(),以传递数据用于输入/输出端口。
    当行块到达自定义转换过程时,集成服务将为每个数据块调用 p_<proc_name>_inputRowNotification()。在此函数内部执行其余步骤。
  3. 在输入行通知函数中使用输入组句柄调用 INFA_CTAGetNumRows(),以查找当前块中的行数。
  4. 使用输入端口句柄调用某一 INFA_CTAGetData<datatype>() 函数,以便为块中的特定行获取数据。
  5. 调用 INFA_CTASetData,以便在块中输出行。
  6. 在调用 INFA_CTOutputNotification() 之前,先调用 INFA_CTASetNumRows(),以通知集成服务该过程在块中输出的行数。
  7. 调用 INFA_CTOutputNotification()。