Oracle insert语句中的PL/SQL过程变量而不是列名
我想将数据插入到Oracle数据库中,但第一步不知道要插入的列名,这取决于用户的选择 例如:Oracle insert语句中的PL/SQL过程变量而不是列名,oracle,plsql,Oracle,Plsql,我想将数据插入到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 (
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
,可以这样做吗?不能像那样使用变量作为列名,不可以。可以使用动态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
);
在这三列中都插入了一些内容,但是values
子句中的case
语句决定了是插入null
还是插入实际值-您只会将实际值放入这三列中的一列
.我现在就试试,但是否可以在sql语句中使用case?@devosJava-yes;我已经添加了一个用于演示的。抱歉,但我还有另一个限制,关于插入。。。。选择(…)逻辑仍然相同?@devosJava-是的;证明。不知道你为什么不试试。。。