Использовать переменную как выражение (условие) в powermaticter informatica
IC=IC
ACC=ACC
v_statement='ACC = '1052502',0.035,IC = 'IC130',0.0675'
v_decode_out=DECODE(TRUE,v_statement,0)
я получаю сообщение об ошибке является правильным выражением выше. Есть ли в любом случае мы можем достичь этого
2 ответа
В вашем запросе есть две проблемы
Во-первых, записанная вами переменная v_statement не будет проверена. Если вы действительно хотите записать строку в этом формате, используйте трубы для добавления
'АСС ='||1052502||", '|| 0,035||' СК ='||'IC130'||','||'0,0675'
Обратите внимание, что вы не можете зациклить кавычки.
Во-вторых, причина, по которой ваш оператор декодирования не будет работать, заключается в несоответствии типов данных. True - логическое значение, а v_statement - строка. Любое расширение переменной может произойти во время выполнения, но не раньше. Таким образом, informatica не позволяет вам использовать этот вид оператора декодирования, если только вы не сравниваете какой-либо тип ввода / переменной строки с другой строкой или любым другим типом данных в этом отношении.
Кроме того, примите решение по вашему случаю. Когда ACC еще IC будет оцениваться (похоже, это ваш случай)
v_decode_out = ДЕКОДИРОВАНИЯ (АКК,'1052502',0.035, ДЕКОДИРОВАНИЕ (СК,'IC130',0,0675))
Когда это и ACC, и IC вместе v_decode_out=DECODE(TRUE,ACC='1052502' и / или IC='IC130',0,035,0.0675)
Это фундаментальные понятия. Желательно, чтобы вы опробовали все доступное в Интернете, прежде чем отправлять вопрос здесь, потому что кто-то может легко понизить вашу оценку, если он почувствует, что вы вообще не приложили никаких усилий, чтобы найти ответ самостоятельно.
Ура!
Записанная вами переменная v_statement не будет проверена. Если вы действительно хотите написать строку в этом формате, тогда добавьте каналы.