我想将数据插入到Oracle数据库中,但是我想要插入的列名在第一步中是未知的,这取决于用户的选择。
例如:
colonne varchar(12) :=null;
...
case
WHEN MOIS1 = 1 THEN
colonne :='col1';
WHEN MOIS1 = 2 THEN
colonne :='col2';
WHEN MOIS1 = 3 THEN
colonne :='col3';
...
insert into Mytable ( user_id, name, colonne, ...)
并且它取决于用户colonne
可以是col1
,col2
还是col3
,是否可以这样做?
答案 0 :(得分:1)
您不能将变量用作列名,不能。您可以使用动态SQL来构建insert语句,然后绑定该值,但由于您的选择有限,您也可以这样做:
insert into mytable(user_id, name, col1, col2, col3)
values (v_user_id, v_name,
case when mois1 = 1 then v_value else null end,
case when mois1 = 2 then v_value else null end,
case when mois1 = 3 then v_value else null end
);
您将某些内容插入所有三列,但case
子句中的values
语句决定您是插入null
还是实际价值 - 你' ll只将实际值放入三列中的一列。