我正在使用存储过程将数据插入到使用游标的临时表中。 此过程在变量内部存储动态查询以装入插入/更新命令。pl/sql - 在存储过程中使用动态查询
这里是代码(不是完整的查询,我剪了一些地区,使其更易于阅读):
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 || '"
价值是Number
类型,它被替换为“62481,76”。换句话说,这个逗号使得命令错误并且不起作用。
有没有一种简单的方法来代替“”为“”?
非常感谢! (:
什么是OBJETIVO的数据类型? – Chandu 2011-02-15 18:21:39
这是一个数字(38,10)。 – gabsferreira 2011-02-15 18:23:29
然后我不确定为什么它会返回格式化值的数字。 – Chandu 2011-02-15 18:24:52