sql - ORA-06502: PL/SQL: 数字或值错误: 包函数中的字符到数字转换错误
问题描述
我正在尝试创建一个函数,该函数返回流水线表,输入参数为 varchar2、日期或数字。我正在尝试将金额输入为 varchar2,因为我无法像处理小数点前带逗号的数字一样处理它。这是我的包函数的主体:
FUNCTION kreiraj_reprogram_rate (p_sifra_kupca VARCHAR2,
p_id_kartice_kupca NUMBER,
p_iznos_s_pdv VARCHAR2,
p_broj_rata NUMBER,
p_frekvencija_dospijeca NUMBER,
p_datum_dospijeca VARCHAR2,
p_datum_dokumenta VARCHAR2)
RETURN reprogram_rate_table
PIPELINED
IS
v_data reprogram_rate_rec;
v_user VARCHAR2 (200) := mc__secure_context.get_context_username ();
v_iznos_rate NUMBER;
v_broj_rate NUMBER;
v_zadnja_rata NUMBER;
v_datum_dokumenta DATE;
v_datum_dospijeca DATE;
BEGIN
write_log_table ('TEST','p_iznos_s_pdv: '|| to_number(p_iznos_s_pdv));
v_datum_dospijeca := TO_DATE (p_datum_dospijeca, 'dd.mm.yyyy');
v_datum_dokumenta := TO_DATE (p_datum_dokumenta, 'dd.mm.yyyy');
v_iznos_rate := ROUND (to_number(p_iznos_s_pdv) / p_broj_rata, 2);
v_zadnja_rata :=
p_iznos_s_pdv - ROUND ((p_broj_rata - 1) * v_iznos_rate, 2);
v_broj_rate := 1;
FOR r IN 1 .. p_broj_rata
LOOP
IF v_broj_rate = p_broj_rata
THEN
v_data.osnovica := ROUND ((v_zadnja_rata / 1.25), 2);
v_data.pdv := ROUND (v_zadnja_rata * 0.2, 2);
v_data.ukupno := v_zadnja_rata;
ELSE
v_data.osnovica := ROUND ((v_iznos_rate / 1.25), 2);
v_data.pdv := ROUND (v_iznos_rate * 0.2, 2);
v_data.ukupno := ROUND (v_iznos_rate, 2);
END IF;
v_data.sifra_kupca := p_sifra_kupca;
v_data.kartica_kupca := p_id_kartice_kupca;
v_data.broj_rate := v_broj_rate;
v_data.datum_dokumenta := v_datum_dokumenta;
v_data.datum_dospijeca := v_datum_dospijeca;
PIPE ROW (v_data);
v_broj_rate := v_broj_rate + 1;
v_datum_dospijeca :=
CASE
WHEN p_frekvencija_dospijeca = 1
THEN
ADD_MONTHS (v_datum_dospijeca, 1)
WHEN p_frekvencija_dospijeca = 3
THEN
ADD_MONTHS (v_datum_dospijeca, 3)
WHEN p_frekvencija_dospijeca = 6
THEN
ADD_MONTHS (v_datum_dospijeca, 6)
WHEN p_frekvencija_dospijeca = 12
THEN
ADD_MONTHS (v_datum_dospijeca, 12)
END;
END LOOP;
END kreiraj_reprogram_rate;
并且错误说错误出现在我尝试将值 4159,57 转换为数字的第一行 write_log_table 上。
我尝试 select to_number('4159,57') from dual in SQL developer,它工作得很好,所以我不知道有什么问题。
有人可以帮忙吗?
谢谢。
解决方案
推荐阅读
- tensorflow - AutoML Vision Edge 中使用什么算法?
- hibernate - 查询参数与 quarkus 上的结果不一致
- python - 如何使用 M1 在 MacOS 上安装 SciPy
- scala - Akka committableOffset 存储在数据库中
- python - 用 astropy 和 fit_wcs_from_points 拟合天顶等面积投影
- arrays - bash - 使用带有 find 命令的数组
- tcsh - 在 tcsh 中获取文件时,RHEL6 和 RHEL7 之间的错误管理不同
- python - 有没有办法提取软件创建的图形的 .tiff 图像的私有标签中包含的数据?
- javascript - 不再工作的旧 JQuery 代码(wordpress)
- mongodb - MongoDriver for Scala + http4s:如何检查 createCollection() 是否抛出异常?