alter PROCEDURE CEMIS_DelDbObjectAS
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' 附近有语法错误。

解决方案 »

  1.   

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

  2.   

    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 
                                       exec(' drop   view  '+ @parm_name+) 
    end 
                            --存储过程 
                              if(@parm_type= 'p ') 
                                    begin 
                                       exec(' DROP   PROCEDURE   '+@parm_name)
                                    end 
                              --触发器 
                              if(@parm_type= 'TR ') 
                                    begin 
                                       exec(' DROP   TRIGGER     '+@parm_name)
                                    end 
                              --函数 
                              if(@parm_type= 'fn ') 
                                    begin 
                                       exec(' DROP   FUNCTION   '+@parm_name)
                                    end 
    FETCH   NEXT   FROM   DbObjectCursor   INTO   @parm_name,@parm_type 
        end 
    CLOSE   DbObjectCursor 
    DEALLOCATE   DbObjectCursor 
    END 
    GO 
      

  3.   

    exec('drop view '+@parm_name)
    .
    .
    .