--用exec就行了,如下面的例子:
declare @tbname varchar(250)
set @tbname='要删除的表名'if exists(select 1 from sysobjects where name=@tbname and type='U')
exec('drop table '+@tbname)
declare @tbname varchar(250)
set @tbname='要删除的表名'if exists(select 1 from sysobjects where name=@tbname and type='U')
exec('drop table '+@tbname)
解决方案 »
- 有关mysql2008安装是 点开setup时候 闪一下的原因。 .
- 很长时间不写sql了,忘了,求一查询语句。
- SELECT TOP 100 PERCENT 这是什么意思
- sql2000和mysql 能否安装在同一台win2000系统上
- 查询所有的学生都学的课程号与课程名称(一些公共课,如英语、政治等)
- 在sql server中如何知道某张表有多大,占多少空间?
- 数据库附加问题
- 难题求解,分不够开贴再加,谢谢!
- ODBC方式连接SQL SERVER,为什么不能执行带参数的存储过程?
- SQL SERVER要更新10000000条的记录该如何处理?
- 挑战高手:如何系统表如sysprocesses表中建立触发器
- ms_SQL事务请教 在线等待 急 分不多30分送
FROM sysobjects
WHERE name = N'sp_droptable'
AND type = 'P')
DROP PROCEDURE sp_droptable
GOCREATE PROCEDURE sp_droptable
@tablename varchar(20)
AS
declare @sql varchar(200)
set @sql='IF EXISTS (SELECT name FROM sysobjects
WHERE name = '''+@tablename+''' AND type = ''P'')
DROP table '+@tablename
GO
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'sp_droptable'
AND type = 'P')
DROP PROCEDURE sp_droptable
GOCREATE PROCEDURE sp_droptable
@tablename varchar(20)
AS
declare @sql varchar(200)
set @sql='IF EXISTS (SELECT name FROM sysobjects
WHERE name = '''+@tablename+''' AND type = ''P'')
DROP table '+@tablename
exec(@sql)
GO