表明格式为 X_YYMM_A, YYMM为年月,0804就是2008年4月,现在想把一年的12张表都建出来,程序怎么实现?
declare
v_sql varchar(2000);
begin
  for ....  loop
  v_sql := 'create table X_' || ... || '_A(cloumn char(9));';
  execute immediate v_sql;
  end loop;
end;
/
for 循环不知道该怎么写,谢谢大家了

解决方案 »

  1.   

    declare 
    v_sql varchar(2000); 
    i     number(2);
    start_date date;
    begin 
      i:=1
      select trunc(sysdate,'yyyy') into :start_date from dual
      while i<13 loop 
      v_sql := 'create table X_'  ¦ ¦ to_char(start_date,'yymm')  ¦ ¦ '_A(cloumn char(9));'; 
      execute immediate v_sql; 
      i:=i+1;
      start_date:=add_months(start_date,1);
      end loop; 
    end; 
      

  2.   


    DECLARE
       v_sql        VARCHAR (2000);
       i            NUMBER (2);
       start_date   DATE;
    BEGIN
       i := 1;   SELECT TRUNC (SYSDATE, 'yyyy')
         INTO start_date
         FROM DUAL;   WHILE i < 13
       LOOP
          v_sql :=
                'create table X_'
             || TO_CHAR (start_date, 'yymm')
             || '_A(cloumn char(9));';      EXECUTE IMMEDIATE v_sql;      i := i + 1;
          start_date := ADD_MONTHS (start_date, 1);
       END LOOP;
    END;