SELECT  *  INTO  TABLE  TEMP3  WHERE  WZH=num1  AND  ROWNUM=1;  选取一条记录取出里面已经存的字段,形成临时表
UPDATE  TEMP3  SET  JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);  修改特定字段
INSERT  TEMP3  INTO  CS;  
将修改后的字段插入到原来的表格cs中

解决方案 »

  1.   

    把你的表结构写出来,这问题可以不用到过程。最多两个SQL语句搞定。(如果只补数据到一张表,1句则可)
      

  2.   

    desc cs
    wzh         char(5)
    jcsz       number(5)
    jcyqbh     char(10)
    jcrq       date
    dygd       char(20)
    sbgxlb     char(20)
    sbgxxh     char(20)
    sccj       char(30)
    zyjz       char(10)
    jzyz       number(4,2)
    gywd       number(4)
    gyyl       number(5,2)
    bjnd       number(2)
    wd         number(2)
    sd         number(2)
    qy         number(4,1)
    fs         number(4,2)
    wxyy      char(30)
    wxff      char(30)
    wxrq      date
    jcry      char(8)
    bz     char(50)
          
      

  3.   

    wzh和jcrq联合主键,jcsz,bjnd非空,其他的都无所谓,只有一张表,没有外键
    现在其他的不用管,随便取出某一个wzh的记录,然后修改里面的jcsz和jcrq这两个字段,然后将其作为新记录插入到表中,就ok了。jcsz随机产生,jcrq(检测日期)是上面说的那六个日期中的一个,最终对每一个wzh(位置号),都有6个日期,6次记录
    这样就一切ok了
    我不太熟pl/sql所以上面的的程序可能有些错误,所以请各位高手指教,谢谢各位了!!!
      

  4.   

    declare
    num1 integer:=0;
    num2 integer:=0;
    jcrqnum DATE;
    begin
     FOR i IN 0..90000  LOOP
     num1:=i;
     IF i IN (SELECT DISTINCT WZH FROM CS) THEN
      SELECT COUNT(*) INTO num2 FROM CS WHERE WZH=num1;
      FOR i1 IN 1..num2 LOOP
        SELECT JCRQ INTO jcrqnum FROM CS  WHERE WZH=num1 AND ROWNUM=i1;
         IF NOT jcrqnum>=to_date('20031014','yyyymmdd') AND jcrqnum<=to_date('20031022','yyyymmdd') THEN
         SELECT * INTO TABLE TEMP1 WHERE WZH=num1 AND ROWNUM=1;
         UPDATE TEMP1 SET JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
         INSERT TEMP1 INTO CS;
         END IF;     IF NOT jcrqnum>=to_date('20031208','yyyymmdd') AND jcrqnum<=to_date('20031212','yyyymmdd') THEN
         SELECT * INTO TABLE TEMP2 WHERE WZH=num1 AND ROWNUM=1;
         UPDATE TEMP2 SET JCRQ=to_date('20031208','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
         INSERT TEMP2 INTO CS;
        END IF;    IF NOT jcrqnum>=to_date('20040210','yyyymmdd') AND jcrqnum<=to_date('20040225','yyyymmdd') THEN
         SELECT * INTO TABLE TEMP3 WHERE WZH=num1 AND ROWNUM=1;
        UPDATE TEMP3 SET JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
        INSERT TEMP3 INTO CS;
        END IF;

        IF NOT jcrqnum>=to_date('20040413','yyyymmdd') AND jcrqnum<=to_date('20040425','yyyymmdd') THEN
         SELECT * INTO TABLE TEMP4 WHERE WZH=num1 AND ROWNUM=1;
         UPDATE TEMP4 SET JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
         INSERT TEMP4 INTO CS;
        END IF
       IF NOT jcrqnum>=to_date('20040608','yyyymmdd') AND jcrqnum<=to_date('20040613','yyyymmdd') THEN
         SELECT * INTO TABLE TEMP5 WHERE WZH=num1 AND ROWNUM=1;
         UPDATE TEMP5 SET JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
         INSERT TEMP5 INTO CS;
        END IF;   IF NOT jcrqnum>=to_date('20041202','yyyymmdd') AND jcrqnum<=to_date('20041208','yyyymmdd') THEN
        SELECT * INTO TABLE TEMP6 WHERE WZH=num1 AND ROWNUM=1;
        UPDATE TEMP6 SET JCRQ=to_date('20031014','yyyymmdd'),jcsz=DBMS_radom.value(1,20);
        INSERT TEMP6 INTO CS;
       END IF;
      END FOR;
     END IF;
     END FOR;
    END;
      

  5.   

    我觉得我这个程序思路差不多了
    就是具体实现方法有些问题
    pl/sql语法我不太会
    请高手帮忙啊