目录

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 转换

转换指南

转换指南

指定何时运行存储过程

指定何时运行存储过程

除了指定存储过程转换的模式以外,还可指定何时运行存储过程。如果发生上述未连接存储过程的情况,表达式转换将引用存储过程,这意味着每次行通过表达式转换进行传递时都会运行存储过程。不过,如果没有任何转换引用存储过程转换,则您可以选择在会话之前或之后运行一次存储过程。
以下列表介绍了运行存储过程转换的选项:
  • 普通视图。
    存储过程将在映射中存在转换的情况下以逐行的方式运行。这对于为通过映射传递的每行数据调用存储过程非常有用,如针对输入端口运行计算。连接存储过程仅以普通模式运行。
  • 预加载源。
    在会话从源检索数据之前,存储过程会运行。这对于验证表的存在性或在临时表中执行数据联接非常有用。
  • 加载后源。
    在会话从源检索数据之后,存储过程会运行。这对于删除临时表非常有用。
  • 预加载目标。
    在会话将数据发送到目标之前,存储过程会运行。这对于验证目标系统上的目标表或磁盘空间非常有用。
  • 加载后目标。
    会话将数据发送到目标之后,存储过程会运行。这对于在数据库中重新创建索引非常有用。
可以在相同映射中以不同模式运行多个存储过程转换。例如,预加载源存储过程可以检查表的完整性,普通存储过程可以填充表,加载后存储过程可在数据库中重建索引。但您不能在映射中同时以连接和未连接模式运行存储过程转换的同一实例。您必须创建转换的不同实例。
如果映射调用某一映射中的多个源或目标预加载或加载后存储过程,则集成服务将按您在该映射中指定的执行顺序执行存储过程。
集成服务将使用您在转换属性中指定的数据库连接执行每个存储过程。集成服务将在遇到第一个存储过程时打开数据库连接。数据库连接将保持打开,直到集成服务处理完该连接的所有存储过程为止。集成服务将在遇到使用不同数据库连接的存储过程时关闭数据库连接,然后打开一个新的数据库连接。
要运行多个使用同一数据库连接的存储过程,请将这些存储过程设置为连续运行。如果不将它们设置为连续运行,可能会在目标中获得意外结果。例如,您有两个存储过程:存储过程 A 和存储过程 B。存储过程 A 开始事务处理,而存储过程 B 则提交该事务。如果您在存储过程 B 之前运行存储过程 C,请使用其他数据库连接,存储过程 B 无法提交该事务,因为集成服务将在运行存储过程 C 时关闭该数据库连接。
请使用以下准则,以在一个数据库连接内运行多个存储过程:
  • 存储过程将使用在存储过程属性中定义的同一数据库连接字符串。
  • 将存储过程设置为按照连续顺序运行。
  • 存储过程具有相同的存储过程类型:
    • 源预加载
    • 源加载后
    • 目标预加载
    • 目标加载后