@sql='DELETE FROM'+@table_name+' WHERE drug_code='+@drug_code
from 后面是不是没加空格???
试试先

解决方案 »

  1.   

    加了空格不行,
    现在的代码:
    ----------------------------------------------
    --set nocount on
    declare @table_name char(30),@sql varchar(100),@drug_code char(20)
    declare find_table_name_set cursor for
    select name 
    from sysobjects
    where (id in (select id from syscolumns where name='drug_code'))
      and (id<>1716917188)
      and (xtype<>'v')
    OPEN find_table_name_setFETCH NEXT FROM find_table_name_set 
    INTO @table_name
    WHILE @@FETCH_STATUS = 0
    BEGIN 
       set @drug_code='1010'
       set @sql='DELETE FROM '+@table_name+' WHERE drug_code= '+@drug_code
       exec @sql
    END
    close find_table_name_set
    deallocate find_table_name_set
    --------------------------------------------------
    报如下错误:
    服务器: 消息 2812,级别 16,状态 62,行 17
    Could not find stored procedure 'DELETE FROM disrepair_account_book         WHERE drug_code= 1010                '
      

  2.   

    --set nocount on
    declare @table_name char(30),@sql varchar(100),@drug_code char(20)
    declare find_table_name_set cursor for
    select name 
    from sysobjects
    where (id in (select id from syscolumns where name='drug_code'))
      and (id<>1716917188)
      and (xtype<>'v')
    OPEN find_table_name_setFETCH NEXT FROM find_table_name_set 
    INTO @table_name
    WHILE @@FETCH_STATUS = 0
    BEGIN 
       set @drug_code='1010'
       set @sql='DELETE FROM '+@table_name+' WHERE drug_code= '+@drug_code
       exec(@sql)  -----这样修改
    END
    close find_table_name_set
    deallocate find_table_name_set
      

  3.   

    exec @sql ---->    exec (@sql)
      

  4.   

    ok
    sorry
    一楼是对的,没注意,
    结贴.