posts - 23,  comments - 3,  trackbacks - 0
项目需要,为每天建立一个表。其实个人感觉统计起来是方便,但是给操作添了不少工作量。木办法~
oracle版:
-- 创建一天一个表
CREATE PROCEDURE CREATEDAILYTABLE AS
   v_tBeginDate 
TIMESTAMP;
     v_tEndDate   
TIMESTAMP;
     v_sTableName 
VARCHAR(100);
     v_sIndexName 
VARCHAR(100);  
     v_sSQL       
VARCHAR(4000);

    
BEGIN
      v_tBeginDate :
= TO_DATE('2000-01-01 00:00:00''YYYY-MM-DD HH24:MI:SS');
      v_tEndDate   :
= TO_DATE('2001-01-01 00:00:00''YYYY-MM-DD HH24:MI:SS');

  
WHILE v_tEndDate > v_tBeginDate LOOP
       v_sTableName :
= 'test_' || SUBSTR(TO_CHAR(v_tBeginDate, 'YYYY-MM-DD HH24:MI:SS'), 62)
                                       
|| SUBSTR(TO_CHAR(v_tBeginDate, 'YYYY-MM-DD HH24:MI:SS'), 92);
         v_sSQL :
= '
        create table 
' || v_sTableName || '
        (
          aaaa int,
                    BBBB varchar(20),
                    CCCC varchar(100)
                    primary key  (aaaa)
        )
'
 
COMMIT;
        v_tBeginDate :
= v_tBeginDate + 1;    
  
END loop;
END CREATEDAILYTABLE;
还有一个以前sqlserver版的,懒得改了
declare 
@m int,
@d int,
@tablename varchar(100),
@month varchar(10),
@day varchar(10),
@sql varchar(1000)
set @m=1
set @d=1
set @month = ''
set @day = ''
set @sql = ''
while (@m<=12)
begin
    
while (@d<=31)
               
begin 
                    
set @month = @m
                    
set @day =@d
                    
if (@m<10)
                      
set @month = '0' + @month
                    
if (@d<10)
                          
set  @day = '0' + @day
                        
                    
set @tablename = '_' + @month + @day
                        
if (@m=2 and @d>29 or @m=4 and @d>30 or @m=6 and @d>30 or @m=9 and @d>30 or @m=11 and @d>30
                            
print '该表不创建:'+ @tablename
                        
else
                            
begin  
                                
set @sql ='
                                CREATE TABLE test+ @tablename +
'
                                (
                                aaa  
varchar(100),
                                bbbb 
varchar(100),                                PRIMARY KEY (aaa)
                                )
'
                                exec(@sql)
                            end 
                    set @d=@d+1
            end
            set @m=@m+1
            set @d=1
end
go

posted on 2008-12-18 10:33 temper 阅读(184) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: