2016-09-27 82 views
0

我想在ado.net源碼中傳遞參數化查詢,並且我不希望這樣做,只有這樣才能使用表達式。在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] +"' " 

但是當我點擊評價的表情,我看空,而不是變量..does人知道的可能問題: 這裏是計算表達式如下

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 = '' 
+2

檢查包中的END_LEDGER_YR參數。它必須是空的。給它一些默認值 –

+0

表達式不僅是參數查詢的方式。您可以使用SQL命令作爲數據訪問模式,參數爲「?」並通過點擊參數按鈕設置參數值並將變量映射到它 –

+0

@SolowDeveloper您無法使用ado.net源查詢進行參數映射。這隻與OLEDB查詢有關。 –

回答

1

當您單擊評估表達式按鈕時,實際上沒有執行代碼,因此SSIS唯一可以查看的是您給變量的靜態默認值。

如果您希望在「評估表達式」中看到值而不是空白,則即使您不打算使用該值,也必須爲變量指定默認值。當執行SSIS包時,無論用什麼代碼填充變量都會覆蓋默認值,因此具有默認值是無害的。