zoukankan      html  css  js  c++  java
  • 批量删除表和存储过程

          我是个不愿动脑子的人,要不是要删除表和存储过程太多,我就一个一个删了,可这次真没辙,实在太多了(其实我想把整个库全删来着,然后再把SQL语句执行一遍),可是由于还没有使用过游标,所以利用这次机会把游标练练.

          废话少说,我使用游标来实现批量删除,实现的过程参考了小强(占卜师)的例子,然后结合实际情况实现了表和存储过程的批量删除

         

    USE JBlogSite
    DECLARE Del_Cursor CURSOR
    FOR
    SELECT 'DROP PROCEDURE ' + name from dbo.sysobjects WHERE OBJECTPROPERTY(id, N'IsProcedure'= 1 AND name not like 'USP_Blog%'
    OPEN Del_Cursor
    DECLARE @curname sysname
    FETCH NEXT FROM Del_Cursor into @curname
    WHILE(@@fetch_status=0)
      
    BEGIN
      
    EXEC(@curname)
      
    FETCH NEXT FROM Del_Cursor into @curname
      
    END
    CLOSE Del_Cursor
    DEALLOCATE Del_Cursor

           

           由于我也是第一次使用游标,为了巩固,我再结合该例,说明一下游标的创建过程:

           第一行:说明使用那个库,我在测试的时候采用JBlogSite;

           第二行:声明游标,游标的名字是Del_Cursor,标准声明是这样:

             DECLARE  cursor_name [INSENSITIVE] [SCROLL] CURSOR

             FOR  select_statement

             [FOR {READ ONLY} | {UPDATE} [OF column_name] [, ...n]]

           其中:

            cursor:游标名称;

            INSENSITIVE:告诉DBMS制作查询结果集数据的临时副本,而不是使用指针指向数据库表中真实数据行的列.

            SCROLL :指定所有的提取选项(FIRST,LAST,PRIOR,NEXT,RELATIVE,ABSOLUTE)均可用

            select_statement:查询表达式

            READ ONLY:禁止通过该游标进行更新

            UPDATE [OF columns_name [,...]]:可以更新的列名,如果写出UPDATE,则说明可以更新全部列

    通过游标实现对每行的单独操作.由于是执行删除操作,所以代码第四行的WHERE 条件特别重要,由于我们在创建存储过程时, 对存储过程的命名都有一定的规则,所以再删除的时候也比较好删除.

  • 相关阅读:
    Consul负载均衡策略记录
    ASP NET CORE开发优化相关专用随笔
    .NET CORE 3.1配置文件读取方式
    CentOS 8 安装.NET CORE 3.1 发布以及运行
    CORE EF生成ORACLE数据库模型报错问题记录
    【转载】一名程序员十年技术之路的思考与感悟
    iview-admin部署linux nginx报500错误的问题记录
    [转]浅谈账号系统设计
    C#使用phantomjs,爬取AJAX加载完成之后的页面
    nginx触屏版跟PC的代理设置
  • 原文地址:https://www.cnblogs.com/jjhe369/p/1255845.html
Copyright © 2011-2022 走看看