一直想用 drop table 删除多个表,以前捣鼓一阵,没有成功。别人给了个用游标的,我一听游标就头大了。大学时学的东西,现在只知道有个这么个名词了。干什么的都忘记了。
直到昨天,翻开大学时的笔记,弄明白的了游标的含义。还有个例子,就在MSSql中敲了起来,可是mssql的和Oracle的不一样啊。最后在同事的权利配合下,终于搞出来了。
//选择数据库 USE DataName //声明一个游标 DECLARE @name VARCHAR(128); //从sysobjects 表中查找到符合条件的要删除的表 DECLARE cursor_name cursor FOR SELECT name FROM dbo.sysobjects WHERE TYPE='u' AND name LIKE 'Data_%20%' AND RIGHT(name,10) < '2009-01-01' ; //打开游标 OPEN cursor_name; // 从游标中fetch 信息 fetch NEXT FROM cursor_name INTO @name; while (@@fetch_status = 0) BEGIN //执行删除表 EXEC('drop table "' + @name + '"'); fetch NEXT FROM cursor_name INTO @name; END //关闭游标 close cursor_name; deallocate cursor_name;
太弱智了吧,呵呵
真的很弱智吗?有什么好的方法?