zoukankan      html  css  js  c++  java
  • Oracle存储过程简单示例 Yang

    记录一个简单的Oracle存储过程,主要区别它和SQL存储过程的不同。

    涉及到:输入输出参数(不能定义参数的长度)、定义变量(没有DECLARE)、变量赋值方式(SELECT INTO、:=)、字符串连接(||)、条件语句IF ELSIF END IF等。

    CREATE OR REPLACE PROCEDURE SP_DELETE_BYFILENAME(V_TABLENAME  NVARCHAR2, V_CONDITIONS  NVARCHAR2,V_IP NVARCHAR2,V_CURRENTUSER NVARCHAR2)
    AS
      V_OUTDATEORDERCOUNT INTEGER;
      V_HANDLEORDERCOUNT INTEGER;
      V_COUNT INTEGER;
      V_OPERCONTENT NVARCHAR2(800);
    BEGIN
      IF V_TABLENAME='OUTDATEORDER' THEN
     
        --统计要删除的超时工单数量
        SELECT COUNT(*) INTO V_OUTDATEORDERCOUNT FROM TB_BB_WORKORDERORIGINAL  WHERE REMARK=V_CONDITIONS; 
    
        --统计要删除的超时工单明细数量
        SELECT COUNT(*) INTO V_COUNT FROM TB_BB_WORKORDERDEPARTMENT WHERE SD IN
        (
          SELECT SD FROM TB_BB_WORKORDERORIGINAL WHERE REMARK=V_CONDITIONS
        );
        
        IF V_OUTDATEORDERCOUNT > 0 OR V_COUNT > 0 THEN
           V_OPERCONTENT :='删除超时工单'|| V_OUTDATEORDERCOUNT||'条,删除超时工单明细'||V_COUNT||'条。';   
        END IF;
      
        --1:当按文件名批量删除超时工单中的数据时,也要将超时工单明细表中的数据删除
        DELETE  FROM TB_BB_WORKORDERDEPARTMENT WHERE SD IN
        (
          SELECT SD FROM TB_BB_WORKORDERORIGINAL WHERE REMARK=V_CONDITIONS
        );
        
        --2:按导入文件名称批量删除超时工单表中的数据
        DELETE  FROM TB_BB_WORKORDERORIGINAL  WHERE REMARK=V_CONDITIONS; 
        
      ELSIF V_TABLENAME='HANDLEORDER' THEN
         --统计要删除的已处理工单数量
         SELECT COUNT(*) INTO V_HANDLEORDERCOUNT FROM TB_BB_WORKORDERDISPOSEORIGINAL WHERE REMARK=V_CONDITIONS;
         
          --统计要删除的超时工单明细数量
         SELECT COUNT(*) INTO V_COUNT FROM TB_BB_WORKORDERDEPARTMENT WHERE ID IN
         (
           SELECT ID FROM TB_BB_WORKORDERDISPOSEORIGINAL WHERE REMARK=V_CONDITIONS
         );
         
         IF V_HANDLEORDERCOUNT > 0 OR V_COUNT > 0 THEN
           V_OPERCONTENT :='删除已处理工单'|| V_HANDLEORDERCOUNT||'条,删除超时工单明细'||V_COUNT||'条。';   
         END IF; 
    
        --1:删除已处理工单数据时,也要将对应的超时工单明细表中的数据删除
         DELETE  FROM TB_BB_WORKORDERDEPARTMENT WHERE ID IN
         (
           SELECT ID FROM TB_BB_WORKORDERDISPOSEORIGINAL WHERE REMARK=V_CONDITIONS
         );
       
        --2:按导入文件名批量删除已处理工单中的数据
         DELETE  FROM TB_BB_WORKORDERDISPOSEORIGINAL WHERE REMARK=V_CONDITIONS; 
     
     END IF;
         
         --3:添加操作日志
         INSERT INTO TB_BB_LOG(LOGINNAME,IP,OPERTIME,OPERCONTENT)VALUES(V_CURRENTUSER,V_IP,sysdate,V_OPERCONTENT);
     
      COMMIT;
    END SP_DELETE_BYFILENAME;
      
     
  • 相关阅读:
    Django的mode的分组查询和聚合查询和F查询和Q查询
    Django的models操作
    django复习--学校管理系统用到的知识点梳理
    django做form表单的数据验证
    一个不错的git资源站点
    php异常处理
    laravel自定义验证
    docker从容器中怎么访问宿主机
    laravel 之jwt认证使用详解
    laravel更改默认的登录密码加密方式
  • 原文地址:https://www.cnblogs.com/Yang2012/p/2871412.html
Copyright © 2011-2022 走看看