Нет, это невозможно без динамического SQL.Однако вы можете написать статический оператор обновления для интерпретации значения переменной и обновления правильного столбца.Например:
(Предполагая, что «XC» является переменной PL / SQL. Если вы не используете PL / SQL, вам потребуется переменная связывания, поэтому заменяйте каждое вхождение «XC» на «: XC»То же самое с "ATTR_VAL".)
UPDATE P_ATTR
SET
COLUMN_1 = DECODE(XC,'COLUMN_1',ATTR_VAL,COLUMN_1),
COLUMN_2 = DECODE(XC,'COLUMN_2',ATTR_VAL,COLUMN_2),
COLUMN_3 = DECODE(XC,'COLUMN_3',ATTR_VAL,COLUMN_3),
COLUMN_4 = DECODE(XC,'COLUMN_4',ATTR_VAL,COLUMN_4),
...
SYS_MODIFIED_BY =UPPER(TRIM(USER_ID)),
SYS_MODIFIED_DATE =SYSDATE
WHERE ID_1 IN( SELECT ID_1
FROM EMP_MSTR
WHERE UPPER(x_SQL)= UPPER(LOC)
AND UPPER(LOC_CD)=UPPER('IND'));