我在Orcale有桌子。像:
ID | YEAR | Day1 | Day2 | Day3 | Day4 | Day5 ... to Day31
========================================================
我想更新特定日期。我有从日期算起的日期号码。但是我如何将日期编号连接到“Day”列,以便我获得特定日期的列。如果有任何其他方式可以帮助我。
谢谢, ByteBoy
答案 0 :(得分:0)
这解决了您的问题:
CREATE TABLE day_table
(id NUMBER,
year NUMBER,
day1 NUMBER,
day2 NUMBER,
day3 NUMBER,
day4 NUMBER,
day5 NUMBER
);
INSERT INTO day_table VALUES(1, 2014, 1, 2, 3, 4, 5);
CREATE OR REPLACE PROCEDURE update_day(p_day_number NUMBER, p_day_value NUMBER) IS
v_sql VARCHAR2(200);
BEGIN
v_sql:='UPDATE day_table SET day'||p_day_number||'='||p_day_value;
EXECUTE IMMEDIATE v_sql;
END;
BEGIN
update_day(3, 666);
END;
答案 1 :(得分:0)
这是一个工作示例。
create table t1(
datum date
,day1 number, day2 number, day3 number, day4 number, day5 number
,day6 number, day7 number, day8 number, day9 number, day10 number
,day11 number, day12 number, day13 number, day14 number, day15 number
,day16 number, day17 number, day18 number, day19 number, day20 number
,day21 number, day22 number, day23 number, day24 number, day25 number
,day26 number, day27 number, day28 number, day29 number, day30 number
,day31 number
,constraint t1_pk primary key(datum)
);
insert into t1(datum)
select date '2014-01-01' - 1 + level as datum
from dual
connect by level <= date '2014-12-31' - date '2014-01-01' + 1;
commit;
declare
l_sql varchar2(1000) := null;
l_col varchar2(80) := null;
begin
for r in (select datum from t1) loop
l_col := 'day' || to_number(to_char(r.datum, 'DD'));
l_sql := 'update t1 set ' || l_col || ' = 1 where datum = :d';
execute immediate l_sql using r.datum;
end loop;
commit;
end;
/
答案 2 :(得分:0)
我在Code Behind文件中使用Datatable解决了这个问题。
非常感谢你的帮助。