首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataStage中嵌套的If-Then-Else用法

DataStage中嵌套的If-Then-Else用法
EN

Stack Overflow用户
提问于 2015-06-07 03:17:18
回答 2查看 19.7K关注 0票数 1

我试图在DataStage的转换阶段编写以下嵌套的If-Then-else语句,但它给了我编译错误。有没有人能告诉我有没有别的办法?

代码语言:javascript
复制
If IsNotNull(DSLink16.DECISION_ID) 
Then (
    If DSLink16.DECISION_RESULT = 1 Then (
        If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
        Else If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
        Else If DSLink16.DECISION_CODE = 'NOIS' Then 'NOIS'
    )
    Else If DSLink16.DECISION_RESULT = 2 Then 'DSMS'
    Else If DSLink16.DECISION_RESULT = 3 Then (
        If APPELANT_CODE = 'CLMT' Then 'ALOW' Else 'DENY'
    )
    Else If DSLink16.DECISION_RESULT = 4 Then (
        If APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
    )
    Else If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
    Else If DSLink16.DECISION_RESULT = 6 or DSLink16.DECISION_RESULT = 7 or DSLink16.DECISION_RESULT = 8 Then 'DENY'
)

Else (
    If DSLink16.DECISION_RESULT = 1 Then 'DENY'
    Else If DSLink16.DECISION_RESULT = 2 Then 'DENY'
    Else If DSLink16.DECISION_RESULT = 3 Then 'ALOW'
    Else If DSLink16.DECISION_RESULT = 4 Then 'DENY'
    Else If DSLink16.DECISION_RESULT = 5 Then 'ALOW'
    Else If DSLink16.DECISION_RESULT = 6 Then 'DENY'
    Else If DSLink16.DECISION_RESULT = 7 Then 'DENY'
    Else If DSLink16.DECISION_RESULT = 8 Then 'DENY'
)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 00:28:51

似乎每个If都应该有相应的Else块与之关联。下面的内容对我很有效:

代码语言:javascript
复制
If IsNotNull(DSLink16.DECISION_ID) 
Then (
              If DSLink16.DECISION_RESULT = 1 Then (
                                If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
                               ELSE If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
                               ELSE 'NOIS' 
                )   ELSE If DSLink16.DECISION_RESULT = 2 Then 'DSMS'   ELSE If DSLink16.DECISION_RESULT = 3 Then (
                                If DSLink16.APPELANT_CODE = 'CLMT' then 'ALOW' Else 'DENY'
                )   ELSE If DSLink16.DECISION_RESULT = 4 Then (
                                If DSLink16.APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
                )  ELSE If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
              ELSE   'DENY' 
)

Else (
            If DSLink16.DECISION_RESULT = 1 Then 'DENY' 
                ELSE If DSLink16.DECISION_RESULT = 2 Then 'DENY' 
                ELSE If DSLink16.DECISION_RESULT = 3 Then 'ALOW' 
                ELSE If DSLink16.DECISION_RESULT = 4 Then 'DENY' 
                ELSE If DSLink16.DECISION_RESULT = 5 Then 'ALOW' 
                ELSE If DSLink16.DECISION_RESULT = 6 Then 'DENY' 
                ELSE If DSLink16.DECISION_RESULT = 7 Then 'DENY' 
                ELSE If DSLink16.DECISION_RESULT = 8 Then 'DENY'
                                                                ELSE 'DENY'                )
票数 0
EN

Stack Overflow用户

发布于 2020-04-30 13:26:12

假设DECISION_RESULT是某种整数,最后一个块可以写成:

代码语言:javascript
复制
If DSLink16.DECISION_RESULT = 3 Or DSLink16.DECISION_RESULT = 5
Then "ALOW" Else "DENY"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30686645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档