日期:2014-05-18  浏览次数:20493 次

帮忙看看哪儿的错
alter PROCEDURE CEMIS_DelDbObject

AS
BEGIN
  DECLARE @parm_type varchar(100)
  DECLARE @parm_name varchar(100)  
   
  --检索所有系统对象
DECLARE DbObjectCursor CURSOR FOR
select [name],[type] from sysobjects
OPEN DbObjectCursor
FETCH NEXT FROM DbObjectCursor INTO @parm_name,@parm_type
  WHILE @@FETCH_STATUS=0
Begin 
  --视图
 
if(@parm_type='V')
begin
  drop view @parm_name;
end
  --存储过程
  if(@parm_type='p')
  begin
  DROP PROCEDURE @parm_name;
  end
  --触发器
  if(@parm_type='TR')
  begin
  DROP TRIGGER @parm_name;
  end
  --函数
  if(@parm_type='fn')
  begin
  DROP FUNCTION @parm_name;
  end
FETCH NEXT FROM DbObjectCursor INTO @parm_name,@parm_type
end
CLOSE DbObjectCursor
DEALLOCATE DbObjectCursor
END
GO


报错

消息 102,级别 15,状态 1,过程 CEMIS_DelDbObject,第 24 行
'@parm_name' 附近有语法错误。
消息 102,级别 15,状态 1,过程 CEMIS_DelDbObject,第 29 行
'@parm_name' 附近有语法错误。
消息 102,级别 15,状态 1,过程 CEMIS_DelDbObject,第 34 行
'@parm_name' 附近有语法错误。
消息 102,级别 15,状态 1,过程 CEMIS_DelDbObject,第 39 行
'@parm_name' 附近有语法错误。


------解决方案--------------------
exec(' drop view '+ @parm_name+) 
---全部换成这样