用于获取和提取的循环的Oracle PL / SQL for Oracle插入临时表

时间:2013-11-17 16:35:49

标签: oracle plsql

这是我的第一张桌子。它有start_serial列和end_serial列(来自calculate)

**START_SERIAL  END_SERIAL**
120500216057150 120500216057155
120500216057156 120500216057161

**DENOMINATION  SERIAL_NO           AGENT_NAME  SUB_AGENT**
100          121000056003871    NALINR            A
100          121000056003855    NALINR            A
100          121000056003860    NALINR            A
100          121000056003858    NALINR            A
100          121000056003853    NALINR            A

photo

这是我的第二张桌子。所有连续剧一个接一个地

photo

现在我需要为下面的场景编写pl / sql 1.从sales_details [第一表]中选择一条记录 例如: - 120500216057148 120500216057150 [2张卡]

  1. 然后需要检查它们是否存在于表2 中 例如: - 首先检查120500216057148至120500216057150一个接一个 然后查看下一条记录..
  2. 像那样: - )

    3.如果存在插入到temp_data_table 如果没有 dbms_output 的消息,则找不到匹配的记录。

    请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

这是一个oracle示例,用于对select语句中的数据进行循环并处理每条记录。您可以根据需要自定义此示例。 另请查看此网站以获取更多示例http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/a_samps.htm

-- available online in file 'sample2'
DECLARE
   CURSOR c1 is
       SELECT ename, empno, sal FROM emp
       ORDER BY sal DESC;   -- start with highest paid employee
   my_ename VARCHAR2(10);
   my_empno NUMBER(4);
   my_sal   NUMBER(7,2);
BEGIN
   OPEN c1;
   FOR i IN 1..5 LOOP
      FETCH c1 INTO my_ename, my_empno, my_sal;
      EXIT WHEN c1%NOTFOUND;  /* in case the number requested */
                          /* is more than the total       */
                          /* number of employees          */
      INSERT INTO temp VALUES (my_sal, my_empno, my_ename);
      COMMIT;
   END LOOP;
   CLOSE c1;
END;

答案 1 :(得分:1)

尝试此查询:

insert into temp select * from table1 where START_SERIAL in 
(select START_SERIAL from table2);