Я использую хранимую процедуру для вставки данных во временную таблицу с помощью курсора.Эта процедура сохраняет динамический запрос внутри переменной для монтирования команды вставки / обновления.
Вот код (не полный запрос, я вырезал некоторые части, чтобы его было легче читать):
FOR VC2 IN (SELECT C.OBJETIVO,
C.AUDITORIA ,
C.NOME,
C.PRODUTO
FROM CALCULO C)
LOOP
SELECT ' V_UPD NUMBER := 0;
SELECT (SELECT ID_TIPO_TERR
FROM ZREPORTYTD_TMP
WHERE AUDITORIA = ''' || VC2.AUDITORIA || '''
AND TERRITORIO = ''' || VC2.NOME || '''
AND PRODUTO = ''' || VC2.PRODUTO || ''')
INTO V_UPD FROM DUAL;
UPDATE ZReportYTD_TMP
SET TARGET = ' || VC2.OBJETIVO || '
WHERE AUDITORIA = ''' || VC2.AUDITORIA || '''
AND TERRITORIO = ''' || VC2.NOME || '''
AND PRODUTO = ''' || VC2.PRODUTO || ''';'
INTO V_SQL FROM DUAL;
EXECUTE IMMEDIATE (V_SQL);
END LOOP
Внутри динамического запроса, в этой части "SET TARGET = ' || VC2.OBJETIVO || '"
значение VC2.OBJETIVO
имеет тип Number
и заменяется на "62481,76".Другими словами, эта запятая делает команду неправильной и не работает.
Существует ли простой способ заменить "," на "."?
Большое спасибо!(