• 批量删除表和存储过程


          我是个不愿动脑子的人,要不是要删除表和存储过程太多,我就一个一个删了,可这次真没辙,实在太多了(其实我想把整个库全删来着,然后再把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 条件特别重要,由于我们在创建存储过程时, 对存储过程的命名都有一定的规则,所以再删除的时候也比较好删除.

  • 相关阅读:
    数据卷Volume
    使用 Elastic Stack 分析地理空间数据 (二)
    使用 Elastic Stack 分析地理空间数据 (一)
    如何在 Docker 之上使用 Elastic Stack 和 Kafka 可视化公共交通
    Kubernetes网络模型
    举例:Network Policies
    配置Pod的 /etc/hosts
    k8s上安装安装 Ingress Controller &卸载
    logstash安装插件修改使用的gem源
    示例:Ingress通过互联网访问应用
  • 原文地址:https://www.cnblogs.com/jjhe369/p/1255845.html
Copyright © 2020-2023  润新知