pl/sql - Mit einer dynamischen Abfrage in einer gespeicherten Prozedur

Ich bin verwenden einer gespeicherten Prozedur zum einfügen von Daten in eine temp-Tabelle über einen cursor.
Dieses Verfahren speichert eine dynamische Abfrage in eine variable Montage der insert/update-Befehl.

Hier ist der code(nicht die vollständige Abfrage, habe ich geschnitten, einige Teile zu machen es leichter zu Lesen):

 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

In der dynamischen Abfrage, in diesem Teil "SET TARGET = ' || VC2.OBJETIVO || '" den Wert VC2.OBJETIVO ist ein Number geben, und es ersetzt wie "62481,76". In anderen Worten, dieses Komma macht den Befehl falsch und funktioniert nicht.

Gibt es einen einfachen Weg, um die zu ersetzen "," durch "."?

Vielen Dank! (:

Was ist der Datentyp von OBJETIVO ?
Es ist eine Zahl(38,10).
Dann bin nicht sicher, warum würde es wieder die Zahl als formatierten Wert.
Sie sind sich nicht sicher, warum er zurückkehrte, wie es ist oder warum ich will tun, was ich tun möchte?
Was mache ich falsch? Ist es die Berichterstattung einen Fehler? Oder, Sie sind nicht immer gewünschten Ergebnis ?

InformationsquelleAutor gabsferreira | 2011-02-15

Schreibe einen Kommentar