0

我想将数据插入到 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可以col1col2或者col3,是否可以这样做?

4

1 回答 1

1

您不能像那样使用变量作为列名,不。您可以使用动态 SQL 来构建插入语句,然后绑定值,但由于您的选择有限,您也可以这样做:

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还是实际值 - 您只会将实际值放入三列之一。

SQL 小提琴

于 2013-05-16T08:30:57.920 回答