none
关于存储过程的问题 RRS feed

  • 问题

  • 我现在做了一个检索其他表,把每个表里当前一小时的数据插入到指定的表里面,这个存储过程我调用JOB每小时自动执行。
    我要检索的表的表名都放在了一个表里面,例:
    存有表名的表
    id   name 
    1     aa
    4     bb
    10    dd
    因为表很多所以无法每个表都写一个存储过程,所以我想各位老师能不能告诉我怎么在一个存储过程里自动的根据这个表明里的表执行插入!

    我想到用FOR循环检索出每个表明然后赋给数组,可是SQL2005里好像没有数组,而且表名的ID是不连续的!
    请问各位老师应该怎样做能?

    2009年11月10日 7:36

答案

  • declare @sql varchar(max)
    set @sql=''
    
    select @sql=@sql+'insert into NewTable select columnlist from ['+name+'] where datediff(mi,datefield,getdate())=60;'
    from tablename
    
    print @sql
    
    exec(@sql)
    2009年11月10日 7:55
    版主
  • create table ta(id int)
    create table tb(id int)
    create table tc(id int)
    create table td(tbname varchar(10))
    
    insert td select 'ta' union select 'tb'
    insert ta select 1
    insert tb select 2
    go
    
    EXEC sp_MSforeachtable @whereand='and name in (select tbname from td)',
             @replacechar='*',
             @precommand='print ''data send.....''',
             @command1='insert tc  select id from  * ',
             @postcommand= 'print ''Complete Send!'''
    
    select * from tc
    
    
    drop table ta,tb,tc,td

    More: blog.csdn.net/happyflystone
    2009年11月10日 15:37

全部回复

  • declare @sql varchar(max)
    set @sql=''
    
    select @sql=@sql+'insert into NewTable select columnlist from ['+name+'] where datediff(mi,datefield,getdate())=60;'
    from tablename
    
    print @sql
    
    exec(@sql)
    2009年11月10日 7:55
    版主
  • create table ta(id int)
    create table tb(id int)
    create table tc(id int)
    create table td(tbname varchar(10))
    
    insert td select 'ta' union select 'tb'
    insert ta select 1
    insert tb select 2
    go
    
    EXEC sp_MSforeachtable @whereand='and name in (select tbname from td)',
             @replacechar='*',
             @precommand='print ''data send.....''',
             @command1='insert tc  select id from  * ',
             @postcommand= 'print ''Complete Send!'''
    
    select * from tc
    
    
    drop table ta,tb,tc,td

    More: blog.csdn.net/happyflystone
    2009年11月10日 15:37