要删除的表名为变量,该怎么写?
我现在这么写的,但不行,,
--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




