【问题标题】:passing parameters in ado.net source在 ado.net 源代码中传递参数
【发布时间】:2016-09-27 00:46:18
【问题描述】:

我想在 ado.net 源代码中传递一个参数化查询,我认为这篇文章唯一的方法就是使用表达式。

这是我的表达方式

"SELECT
    LEDGER_YR_MO,
    LOCATION,
    FDR_FND_NO,
    FDR_INVST_POOL_CD,
    FISCAL_YR_BEG,
    FISCAL_YR_END,
    POST_DATE,
    FDR_FND_TTL,
    FDR_FND_TYPE_CD,
    FDR_FND_PURP_CD,
    FDR_CR_ELIG_FL,
    FDR_ANN_CR_RATE,
    FDR_MTH_CR_RATE,
    FDR_CR_AMT,
    FDR_TR_ELIG_FL,
    FDR_ANN_TR_RATE,
    FDR_MTH_TR_RATE,
    FDR_60MTH_AVG_SHARE_PRC,
    FDR_TR_AMT,
    FDR_PROJ_GEP_INCM_AMT,
    FDR_TR_AUGMENTATION_AMT,
    FDR_GEP_NET_PAYOUT_AMT
FROM
    FS0TST.UCOP_FDR_TR_CR where 
LEDGER_YR_MO =  '"+ (DT_WSTR,30)  @[User::END_LEDGER_YR] +"'  "

但是当我点击评估表达式时,我看到的是空白而不是变量..有谁知道可能的问题: 这是评估表达式的样子

SELECT
    LEDGER_YR_MO,
    LOCATION,
    FDR_FND_NO,
    FDR_INVST_POOL_CD,
    FISCAL_YR_BEG,
    FISCAL_YR_END,
    POST_DATE,
    FDR_FND_TTL,
    FDR_FND_TYPE_CD,
    FDR_FND_PURP_CD,
    FDR_CR_ELIG_FL,
    FDR_ANN_CR_RATE,
    FDR_MTH_CR_RATE,
    FDR_CR_AMT,
    FDR_TR_ELIG_FL,
    FDR_ANN_TR_RATE,
    FDR_MTH_TR_RATE,
    FDR_60MTH_AVG_SHARE_PRC,
    FDR_TR_AMT,
    FDR_PROJ_GEP_INCM_AMT,
    FDR_TR_AUGMENTATION_AMT,
    FDR_GEP_NET_PAYOUT_AMT
FROM
    FS0TST.UCOP_FDR_TR_CR where 
LEDGER_YR_MO =  ''

【问题讨论】:

  • 检查包中的 END_LEDGER_YR 参数。它必须是空的。给它一些默认值
  • 而表达式不仅仅是参数查询的方式。您可以使用 SQL 命令作为数据访问模式,参数为“?”并通过单击参数按钮设置参数值并将变量映射到它
  • @SolowDeveloper 您无法使用 ado.net 源查询进行参数映射。这仅适用于 OLEDB 查询。

标签: ssis ssis-2012 ssis-2008


【解决方案1】:

当您单击 Evaluate Expression 按钮时,实际上并没有执行任何代码,因此 SSIS 唯一可以查看的是您为变量提供的静态默认值。

如果您想在 Evaluate Expression 中看到一个值而不是空白,则必须为变量指定一个默认值,即使您不打算使用该值。执行 SSIS 包时,用于填充变量的任何代码都会覆盖默认值,因此使用默认值是无害的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多