我是靠谱客的博主 雪白棉花糖,最近开发中收集的这篇文章主要介绍Oracle使用存储过程+动态游标cursor双重嵌套实现当两张表拥有共同的字段时将字段插入第三张表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Oracle使用存储过程+动态游标cursor双重嵌套实现当两张表拥有共同的字段时将字段插入第三张表 -----‘两种写法’

方法一:

方法头:

  /*1,要求使用存储过程实现
  2,无传入参数,一个返回参数,插入成功返回S,发生异常返回E
  3,要求使用动态游标Cursor
  */

  PROCEDURE TEST_LLP_FOUR(X_RETURN_MSG OUT VARCHAR2);

方法体:

    -- 存储过程demo04
    PROCEDURE TEST_LLP_FOUR(X_RETURN_MSG OUT VARCHAR2) IS
    --  1. 游标获得 TEST_USER_PHONE 表数据
      CURSOR P_CURSOR 
      IS     SELECT  T.ID,T.USERNAME,T.PHONE  FROM TEST_USER_PHONE T;
     -- 2. 游标获得 获得test_user_validate_phone 表数据
      CURSOR  TUVP_CURSOR
      IS     SELECT  T.ID,T.USERNAME,T.PHONE  FROM test_user_validate_phone T;
      

      
      
    BEGIN
      -- 3. 嵌套循环获得需要处理的数据
    FOR FOR_TUVP_CURSOR IN TUVP_CURSOR
      LOOP
        
    FOR FOR_P_CURSOR IN P_CURSOR
      LOOP
              -- 4. 判断
        IF FOR_P_CURSOR.PHONE  =  FOR_TUVP_CURSOR.PHONE
          THEN            
            -- 5. 插入数据
            INSERT INTO test_user_total_phone 
            VALUES(FOR_P_CURSOR.ID,FOR_P_CURSOR.USERNAME,FOR_P_CURSOR.PHONE);
            X_RETURN_MSG :='S';
            END IF;
            END LOOP;   
            END LOOP;  
            -- 6. 抛出异常
     EXCEPTION
        WHEN OTHERS THEN
            X_RETURN_MSG := 'E';
            --7. 结束
 END TEST_LLP_FOUR;
方法二:

方法头:

  /*1,要求使用存储过程实现
  2,无传入参数,一个返回参数,插入成功返回S,发生异常返回E
  3,要求使用动态游标Cursor
  */   
PROCEDURE TEST_LLP_FOUR_TWO(X_RETURN_MSG OUT VARCHAR2);

方法体:

 
 -- 方法二
    PROCEDURE TEST_LLP_FOUR_TWO(X_RETURN_MSG OUT VARCHAR2) IS
      -- 声明变量1
      P_ONE_ID        TEST_USER_PHONE.ID%TYPE;
      P_ONE_USERNAME  TEST_USER_PHONE.USERNAME%TYPE;
      P_ONE_PHONE     TEST_USER_PHONE.PHONE%TYPE;
     
     -- 声明游标1
       CURSOR P_CURSOR IS     
       SELECT  T.ID,T.USERNAME,T.PHONE  FROM TEST_USER_PHONE T;
   
      -- 声明变量2
      P_TWO_ID        test_user_validate_phone.ID%TYPE;
      P_TWO_USERNAME  test_user_validate_phone.USERNAME%TYPE;
      P_TWO_PHONE     test_user_validate_phone.PHONE%TYPE;
      
      
      -- 声明游标2
       CURSOR P_TWO_CURSOR IS     
       SELECT  T.ID,T.USERNAME,T.PHONE  FROM test_user_validate_phone T;
     
     BEGIN
    
    -- 打开游标
    OPEN P_CURSOR; 
    
     -- 遍历游标1
    LOOP
      FETCH P_CURSOR INTO P_ONE_ID,P_ONE_USERNAME,P_ONE_PHONE;
      EXIT WHEN P_CURSOR%NOTFOUND;
     OPEN P_TWO_CURSOR;
     -- 遍历游标2
    LOOP
      FETCH P_TWO_CURSOR INTO P_TWO_ID,P_TWO_USERNAME,P_TWO_PHONE;  
      EXIT WHEN  P_TWO_CURSOR%NOTFOUND;
      -- 判断
     IF P_ONE_PHONE = P_TWO_PHONE THEN  
     INSERT INTO TEST_USER_TOTAL_PHONE 
       VALUES(P_TWO_ID,P_TWO_USERNAME,P_TWO_PHONE);
        X_RETURN_MSG :='S';  
          END IF; 

    END LOOP;
    END LOOP;
     --关闭游标2
    CLOSE P_TWO_CURSOR;
    CLOSE P_CURSOR;   
         EXCEPTION
        WHEN OTHERS THEN
            X_RETURN_MSG := 'E';
       
 END TEST_LLP_FOUR_TWO;
    
    

最后

以上就是雪白棉花糖为你收集整理的Oracle使用存储过程+动态游标cursor双重嵌套实现当两张表拥有共同的字段时将字段插入第三张表的全部内容,希望文章能够帮你解决Oracle使用存储过程+动态游标cursor双重嵌套实现当两张表拥有共同的字段时将字段插入第三张表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部