Oracle 拼接字符串的问题 在线等
我现在有个需求
一张表当中含有多个字段,并且有规律
例如: table中有day1,day2,day3,day4,day5 ... day 31 字段
我现在要对这个表的数据进行修改 在dto中建立day1 ... day31 太过麻烦
所以我只定义了一个属性num 代表day后面的数字,想要在sql中动态拼接
我是这么拼的:
update table set concat('day',#num#) = 5 where id=1
但是出现错误 提示指向concat函数,提示
missing equal sign
我不知道是我拼的有问题,还是根本就不支持这么拼,请解答,谢谢各位
------解决方案--------------------这样拼的话,执行语句的有问题吧,如果num=1,执行语句是 update table set 'day1' = 5 where id=1 。可以用这个替换一下执行语句 execute immediate ' update table set day'
------解决方案--------------------num
------解决方案--------------------' = 5 where id=1' ;
------解决方案--------------------begin
execute immediate 'update table set day'
------解决方案--------------------num
------解决方案--------------------' = 5 where id=1' ;
end;
/
即可
规范些的话:
declare
v_sql varchar2(200);
begin
v_sql := 'update table_name set day'
------解决方案--------------------num
------解决方案--------------------' = 5 where id=1'
execute immediate v_sql;
--commit;
end;
/
------解决方案--------------------声明一个varchar2变量days
days = day
------解决方案--------------------num或days= concat('day',#num#)
update table set days= 5 where id=1