SQL作为数据库,里面有一个表TABLE,TABLE中有字段FNAME,FNAME保存的是磁盘文件夹“DownLoad”中的一些文件的部分文件名,例如“DownLoad”下有一个文件“tff_12345”,FNAME保存的是“2345”,这个时候要做一个删除功能,通过SQL语句来删除所有“DownLoad”下不符合FNAME的文件,如:“DownLoad”下有一个文件“TFF1_qr3”,在表TABLE的FNAME字段中找不到一个和他相匹配的,那么这个文件就可以删除了,我现在只知道SQL删除文件用的是exec   master..xp_cmdshell   'del   filename'   
 ,但是如何实现上述功能?望各位高手不吝赐教,谢谢。

解决方案 »

  1.   

    通过程序逐一读取文件夹下的文件名,通过参数带入到SQL中做查找。
      

  2.   

    你可以在这张表上创建一个触发器,把删除文件的业务逻辑写到触发器里,这样就删除记录时就可以自动删除文件了
    CREATE TRIGGER [TRIGGER NAME] ON [dbo].[文件表名] 
    FOR  DELETE 
    AS
    DECLARE @fileName VARCHAR(50)
    SELECT @fileName = 文件名 FROM deleted
    exec  master..xp_cmdshell  'del  '  + @fileName
      

  3.   

    create table tb_test(id int,fname varchar(50))
    insert into tb_test select 1,'c:\a.txt'
    insert into tb_test select 2,'c:\b.txt'
    insert into tb_test select 3,'c:\c.txt'declare @sql varchar(max)
    select @sql=isnull(@sql+';','')+' exec  master..xp_cmdshell  ''del '+fname+''''
    from tb_test
    exec(@sql)
      

  4.   

    SQL语句,兄弟们,有没有SQL语句的批处理办法啊?
      

  5.   

    还有一个就是我匹配的时候应该用的是like '%名称%'这样的语句吧?这个能写到exec  master..xp_cmdshell  'del  '  + @fileName这样的格式里吗?
      

  6.   

    例如我如果写成:
    declare @FNAME VARCHAR(10)
    SELECT @FNAME = '123'
    exec  master..xp_cmdshell  'del  F:\测试\%@FNAME%.*'  
    这样的语句语法上是没问题,效果上不能达到我的预期目标,该怎么写才好呢?