用ado对象,删除数据库中所有表名以“temp”开头的表,请问sql如何写?
如,表中有如下表:temp_a, temp_b,temp_53 ,....如何用一条语句把这些表全部删掉?

解决方案 »

  1.   

    'SQL Server数据库可以这样处理:sql="declare tb cursor for select name from sysobjects where name like 'temp_%' and xtype='U'" 
    sql=sql & vbcrlf & "declare @tb sysname"
    sql=sql & vbcrlf & "open tb"
    sql=sql & vbcrlf & "fetch next from tb into @tb"
    sql=sql & vbcrlf & "while @@fetch_status=0"
    sql=sql & vbcrlf & "begin"
    sql=sql & vbcrlf & "exec('drop table ['+@tb+']')"
    sql=sql & vbcrlf & "fetch next from tb into @tb"
    sql=sql & vbcrlf & "end"
    sql=sql & vbcrlf & "close tb"
    sql=sql & vbcrlf & "deallocate tb"db.execute sql  'db是ado.connection对象,并且已经连接到数据库
      

  2.   

    我认为 sql="declare tb cursor for select name from sysobjects where name like 'temp_%' and xtype='U'"  中应加escape关键字sql="declare tb cursor for select name from sysobjects where name like 'temp\_%' and xtype='U' escape '\'"
      

  3.   

    我用的是access数据库,有没有这方面的处理方法?如果不能用一条sql达到目的,我只有把所有表遍历一遍来判断删除了。