日期:2014-05-18  浏览次数:20368 次

批删除时有问题
批删除 
'@库表名' 是定义把所有数据库表名放到这个表里 Name是表名

declare @i int
set @i=0
declare @iCount int 
set @iCount=(select count(*) from @库表名)
while(@i<@iCount)

begin
 set @i=@i+1
 declare @fTableName nvarchar(50)
 set @Name=(select Name from @库表名 where fID=@i)
 delete [@Name]

end

但执行报对象名 '@Name'无效。

------解决方案--------------------
需要動態sql
比如
exec('delete '+@name)
------解决方案--------------------
--删除表
exec('drop table '+@name)

--删除数据库
exec('drop database '+@name)
------解决方案--------------------
SQL code
declare @i int 
set @i=0 
declare @iCount int  
set @iCount=(select count(*) from @库表名) 

 declare @fTableName nvarchar(50) 
while(@i <@iCount) 

begin 
     set @i=@i+1 
    delete @库表名 where fID=@i) 
end

------解决方案--------------------
[code=SQL][/code]


CREATE PROCEDURE s_Delete 

@库表名 table 

declare @i int
set @i=0
declare @iCount int
 set @icount= exec('select count(*) from '+@库表名)
while(@i <@iCount)

begin
 set @i=@i+1
 declare @fTableName nvarchar(50)
 set @Name=exec('select Name from '+@库表名 +' where fID='+ltrim(@i))
 exec('delete from ' +[@Name])

end