CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

要删除的表名为变量,该怎么写?

楼主chinesegump(大鱼)2003-01-08 10:45:07 在 MS-SQL Server / 基础类 提问

我现在这么写的,但不行,,  
  --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_set  
   
  FETCH   NEXT   FROM   find_table_name_set    
  INTO   @table_name  
  WHILE   @@FETCH_STATUS   =   0  
  BEGIN    
        @sql='DELETE   FROM'+@table_name+'   WHERE   drug_code='+@drug_code  
        exec   @sql           --此处无法通过  
  END  
  close   find_table_name_set  
  deallocate   find_table_name_set 问题点数:100、回复次数:10Top

1 楼KnowLittle(人傻不要紧,只要肯学习。)回复于 2003-01-08 10:47:33 得分 0

exec(@sql)Top

2 楼SilverSands(洞庭浪子)回复于 2003-01-08 10:48:41 得分 0

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

3 楼chinesegump(大鱼)回复于 2003-01-08 11:04:51 得分 0

加了空格不行,  
  现在的代码:  
  ----------------------------------------------  
  --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_set  
   
  FETCH   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                                 '  
  Top

4 楼KnowLittle(人傻不要紧,只要肯学习。)回复于 2003-01-08 11:19:50 得分 0

楼主为什么不理一楼的意见?:STop

5 楼niuhh(牛烘烘)回复于 2003-01-08 11:21:20 得分 70

exec(@sql)Top

6 楼niuhh(牛烘烘)回复于 2003-01-08 11:22:23 得分 0

如果是字符串,要在括号里才行,如果没括号是为执行存储过程Top

7 楼niuhh(牛烘烘)回复于 2003-01-08 11:23:28 得分 30

--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_set  
   
  FETCH   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  
  Top

8 楼hjhing(winding)回复于 2003-01-08 11:23:32 得分 0

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

9 楼niuhh(牛烘烘)回复于 2003-01-08 11:24:30 得分 0

一楼是对的。Top

10 楼chinesegump(大鱼)回复于 2003-01-08 11:31:46 得分 0

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

相关问题

  • 关于使用表变量,我如何删除掉表变量中的某条记录呢?
  • 怎样删除session变量??
  • 新手问题:如何判断大小写及Cookies变量如何删除~!
  • 怎样删除变量的内存?
  • 表变量问题
  • 表变量问题
  • 怎么用变量去表示变量
  • 如何清空session变量的值,或者删除一个session变量
  • 变量中带变量怎么写?
  • 怎样把一个变量值写进注册表里?急!

关键词

  • code
  • sql
  • drug
  • namewhile
  • setdeallocate
  • sysobjectswhere
  • find
  • nocount ondeclare
  • syscolumns
  • xtype

得分解答快速导航

  • 帖主:chinesegump
  • niuhh
  • niuhh

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo