Oracle SQLPLUS:如果变量为,则设置多个值!=废话

Oracle SQLPLUS:如果变量为,则设置多个值!=废话,oracle,sql-update,sqlplus,case-statement,Oracle,Sql Update,Sqlplus,Case Statement,所以,这是我有生以来第一次在这里找不到我的答案,我不得不提出我自己的问题 这是我的剧本: UPDATE EC_PLAN_OFFERED SET AUTHOR_ID = 'ATTESTATION_FIX', -- MIN_ESSENTIAL_COV_IN = '&&7', -- MIN_VALUE_PLAN_IN = '&&8', DEPENDENT_COV_AVAL_IN = '&&3',

所以,这是我有生以来第一次在这里找不到我的答案,我不得不提出我自己的问题

这是我的剧本:

 UPDATE EC_PLAN_OFFERED
    SET AUTHOR_ID = 'ATTESTATION_FIX', 
        -- MIN_ESSENTIAL_COV_IN = '&&7',
        -- MIN_VALUE_PLAN_IN = '&&8',
        DEPENDENT_COV_AVAL_IN = '&&3', 
        SPOUSE_COVERAGE_AVL_IN = '&&4', 
        SELF_INSURED_IN = '&&5'
    WHERE EMPLOYEE_ONLY_CVG_LVL_IN = 'Y'
        -- AND MEDICAL_PLAN_ID = '&&6'  
        AND (WAIVED_COVERAGE_IN = 'N' OR WAIVED_COVERAGE_IN IS NULL) 
        AND AUTHOR_ID <> 'IMPORT_NON_EMPLOYEE'
        AND OFFER_ID IN (
            SELECT OFFER_ID 
            FROM EC_COVERAGE_OFFER 
            WHERE NVL(COVERAGE_START_DT, EVENT_DT) < TO_DATE('01/01/2016','MM/DD/YYYY')
        );
希望它能在我需要的时候放线,但这并没有达到预期的效果

请注意,这是SQLPLUS,通过“.bat”调用

除了使用另一种语言,还有什么建议吗?
谢谢

如果我正确理解您的需求,您可以尝试以下方式:

MIN_ESSENTIAL_COV_IN = decode('&&7','-',MIN_ESSENTIAL_COV_IN, '&&7' )
这表示始终以这种方式更新列的值:

if &&7 = '-'
    update MIN_ESSENTIAL_COV_IN with its value ( so, do not update)
else 
    update MIN_ESSENTIAL_COV_IN to &&7

谢谢你的回复。我实现了这一点,但现在得到:“第3行错误:ORA-00933:SQL命令未正确结束”它实际上可以工作!这是一个很棒的函数,我从来没有在任何地方见过,哈哈。我必须在调用结束时添加一个“,”。非常感谢。伟大的完成!我也在玩弄这个:医疗计划,比如解码(“&&6',“*”,“%,”&&6')-应该可以工作。。。
if &&7 = '-'
    update MIN_ESSENTIAL_COV_IN with its value ( so, do not update)
else 
    update MIN_ESSENTIAL_COV_IN to &&7