如何使用映射级参数作为SQL转换的输入?

时间:2015-01-28 15:00:28

标签: parameters etl informatica informatica-powercenter

如何使用映射级参数作为SQL转换的输入?我尝试了两种不适合我的方法:


首先尝试:

  1. 我把一个"虚拟表"这是一个关系数据对象,它使用此SQL select 'dummy' as Dummy返回一行一列。

  2. 我将Dummy列连接到SQL转换的输入。

  3. 我将SQL转换的SQL查询设置为此?RETURN_VALUE? = call dbo.MySproc ($MyParameter)

  4. 当我尝试这个并检查数据查看器时,出现Cannot parse parameter [$MyParameter], because the value is not valid错误。我尝试了$ MyParameter,$$ MyParameter和MyParameter的变体,所有这些都基于我在文档中看到的内容,但无论如何我都会遇到SQL错误。

    以下是这一切:

    First Attempt


    第二次尝试:

    1. 我使用上面步骤#1中相同的虚拟表

    2. 我进行了一个表达式转换,它接受了虚拟输入,并且有一个我试图设置为映射级参数的输出。我使用的输出表达式是$MyParam

    3. 我将表达式转换的输出连接到SQL转换的输入。

    4. 当我尝试这个时,我得到一个涉及Error: <<PM Parse Error>> invalid token ... $<<<<MyParameter表达式转换的验证错误。我再次尝试了一些我在文档中看到的参数语法变体,但每次都会出现相同的错误。

      以下是我的第二次尝试:

      Second Attempt


      以下是我如何声明我的映射级参数:

      Mapping-Level Parameter Declaration

      编辑1:我发现此SO answer提到我应该将映射参数的IsExprVar字段设置为FALSE。我必须拥有不同版本的PowerCenter,因为我无法在任何地方看到IsExprVar字段,而在搜索该字词的帮助文件时,我无法获得任何结果。

      编辑2:我包含了我的映射级参数声明

1 个答案:

答案 0 :(得分:-2)

以下是您需要做的事情:

1.将映射参数声明为$$ MyParameter(在声明参数时将Is Expression Variable选项保持为false),单个$用于Informatica内置参数。

2.在Expression中创建一个端口MyPort,并在表达式中将其设置为$$ MyParameter。

3.在SQL转换中拖动相同的端口,在SQL查询中将其称为:~MyPort~不是实际参数。