我想用单个插入插入多个行,但只有最后一个数据可以从列表中变化。 像这样。
INSERT INTO TB_TEMPLATE (
ID_BENEFICIO,ID_PROGRAMA,DDD
)VALUES ('42','78', X)
但X中的值是一个像
这样的列表11,15,17,19,24,43,54,65
可以使用一个插件吗?
所有数据均为String。
答案 0 :(得分:0)
这样的东西会起作用,假设您正在对X值进行硬编码(假设值为NUMBER,那么在插入之前必须将它们转换为VARCHAR2 - 这是通过to_char()
完成的)。根据需要进行调整。如果列表已作为表格中的列存在,请从表格中选择该列,而不是union all
中的“dual
”。
INSERT INTO TB_TEMPLATE (
ID_BENEFICIO,ID_PROGRAMA,DDD
)
with
value_list ( x ) as (
select 11 from dual union all
select 15 from dual union all
select 17 from dual union all
select 19 from dual -- etc.
)
select '42', '78', to_char(x)
from value_list
;
或者也许:
INSERT INTO TB_TEMPLATE (
ID_BENEFICIO,ID_PROGRAMA,DDD
)
with
value_list ( x ) as (
select column_value
from table(sys.odcinumberlist(11,15,17,19,24,43,54,65))
)
select '42', '78', to_char(x)
from value_list
;
答案 1 :(得分:0)
试试这个
INSERT INTO TB_TEMPLATE (ID_BENEFICIO,ID_PROGRAMA,DDD)
SELECT '42','78',
CASE LEVEL WHEN 1 THEN '11'
WHEN 2 THEN '15'
WHEN 3 THEN '17'
WHEN 4 THEN '19'
WHEN 5 THEN '24'
WHEN 6 THEN '43'
WHEN 7 THEN '54'
WHEN 8 THEN '65'
END
FROM DUAL
Connect BY LEVEL <= 8;