【发布时间】:2019-04-01 10:06:11
【问题描述】:
我有一个我想通过单击添加的项目列表,为此我创建了一个表,其中包含一个类型为 varchar2(4000) 的列,在此列中我想列出引用其他表,因此我可以将此列的值粘贴为参数。前任。 select t.* from table_name t where t.point_id in (varchar2 string of comma separated point_ids)。
我遇到的问题是,当我在 varchar2 字段中输入超过 1 个 id 时,我得到 ORA-06502: PL/SQL: numeric or value error: character to number conversion error
如何避免此错误?我的字段是 varchar2,而不是数字,我不希望它被转换。我需要保存我正在解析的值。前任。 (11, 12)
编辑:注意 - 我的选择工作正常,我遇到的问题是保存信息。
我的插入:
procedure lab_water_pointsgroup (v_group_id lab_water_pointsgroups.group_name%type,
v_group_name lab_water_pointsgroups.group_code%type,
v_group_code lab_water_pointsgroups.lab_points_ids%type,
v_lab_points_ids lab_water_pointsgroups.group_id%type) as
begin
update lab_water_pointsgroups
set group_name = v_group_name,
group_code = v_group_code,
lab_points_ids = v_lab_points_ids
where group_id = v_group_id;
if ( SQL%RowCount = 0 ) then
insert into lab_water_pointsgroups
(group_id, group_name, group_code, lab_points_ids)
values
(v_group_id, v_group_name, v_group_code, v_lab_points_ids);
end if;
end;
【问题讨论】:
-
该错误消息可能是件好事,因为将 CSV 数据存储在单个 SQL 列中通常不好。为什么要这样存储 CSV?
-
您确定该列的数据类型是 VARCHAR2 吗?请发布表的描述(在 SQL*Plus 中运行 DESC table_name 并将结果复制到此处 - 编辑问题,不要将其作为评论发布)。
-
我在尝试运行 desc 时收到无效的 SQL 语句。编辑:更新了我的桌子图片。
-
您能否在问题中发布插入语句的代码。
-
您不应该存储逗号分隔的值开始。规范化你的数据模型,你就没有这个问题