Stephen Lloyd
Stephen Lloyd

Reputation: 805

Is there a nesting levels limit with expressions used in SSIS packages?

Working in SQL Server 2008. My first stab at an SSIS script and I need to emulate some if/then conditional logic written in VB.net. I couldn't find any previous questions dealing with nested conditions in expressions and believe I'm following what I've been able to uncover via google on nested conditions in a derived column.

I'm receiving an error while attempting to use nested conditions in the derived column transformation editor. The error I'm receiving indicates that SSIS could not parse my expression. The actual exception: "Exception from HRESULT: 0xC0204006 (Microsoft.SqlServer.DTSPipelineWrap)"

Questions for which the answers might immediately answer my question (and create a new problem):

I'll give two snippets, the first is what I'm actually inserting, the second is a more reader-friendly version. Hopefully someone can point out my error.

Not sure that it has bearing, but please note that [BusArea] is a column derived in a previous step.

actual expression:

[BusArea] == "CCC" || [BusArea] == "NBU" || [BusArea] == "CA" ? (ISNULL([CASE_MORG]) or TRIM([CASE_MORG]) == "" ? ( ISNULL([TRX_MORG]) or TRIM([TRX_MORG]) == "" ? NULL(DT_WSTR,50) : [TRX_MORG]) : [CASE_MORG]) : (ISNULL([CASE_AGT]) or TRIM([CASE_AGT]) == "" ? ( ISNULL([TRX_AGT]) or TRIM([TRX_AGT]) == "" ? NULL(DT_WSTR,50) : [TRX_AGT]) : [CASE_AGT])

formatted for easier reading:

[BusArea] == "CCC" || [BusArea] == "NBU" || [BusArea] == "CA" ? 
    (ISNULL([CASE_MORG]) or TRIM([CASE_MORG]) == "" ?
        ( ISNULL([TRX_MORG]) or TRIM([TRX_MORG]) == "" ?
            NULL(DT_WSTR,50)
            : [TRX_MORG]
        )
        : [CASE_MORG]
    )
    : (ISNULL([CASE_AGT]) or TRIM([CASE_AGT]) == "" ?
        ( ISNULL([TRX_AGT]) or TRIM([TRX_AGT]) == "" ?
            NULL(DT_WSTR,50)
            : [TRX_AGT]
        )
        : [CASE_AGT]
    )

Upvotes: 0

Views: 1197

Answers (1)

user756519
user756519

Reputation:

I don't think there is any limit with nesting conditions. Even if there is one, I don't think we will reach the limit in the packages that we create handle our business processes.

You almost got everything correct. The issue with your conditional statement is that you have used or instead of ||

I copied your exact statement and pasted in Derived Transformation within a Data Flow task and got an error because the package couldn't parse the expression. I replaced all the or's with correct Logical OR (||) operator and the expression evaluated correctly.

Issue with conditional statement

Upvotes: 1

Related Questions