将Oracle转换为PostgreSQL(内部循环)

时间:2019-02-25 16:17:46

标签: postgresql-9.3

Following are the Function Details.

如何将sp_member函数转换为PostgreSQL

 PROCEDURE sp_member(
   i_date IN date,
   o_result OUT NUMBER)

   IS
    o_rowset  ref cursor;
    v_counter number := 0;
    v_test number;
    v_mem_id i_mem_id;
    v_date date;
    v_source varchar2(200);
    v_start_date i_start_date;
    v_end_date i_end_date;
    v_date i_date;
    v_request_source i_request_source;
    v_user_created i_user_created;
   BEGIN

    v_user_created:= 'ADMIN';
    o_result:=0;
    OPEN o_rowset FOR
     select * from TABLE(fn_get_member(i_date)); -- it returns 3 columns id(number)date_1(date),source(varchar2)

      LOOP
      v_counter := v_counter + 1;
      FETCH o_rowset
      INTO v_test,v_date,v_source;
      EXIT WHEN o_rowset%NOTFOUND;

      v_mem_id(v_counter) := v_test;
      v_start_date(v_counter):= v_date;
      v_end_date(v_counter):= null;
      v_date(v_counter):= null;
      v_request_source(v_counter):= v_source;
      END LOOP;
      sp_add_member(v_mem_id,v_start_date,v_end_date,v_date,v_request_source,v_user_created, o_result);


   EXCEPTION
  WHEN OTHERS THEN
    BEGIN
     ROLLBACK;

     o_result := 0;
    END;
  END sp_member;

这是另一个功能细节

sp_add_member(//输入参数)        为我在i_mem_id.first .. i_mem_id.last         环             更新MEMBER_CLASS                SET END_DATE = SYSDATE,                USER_MODIFIED = i_user_created,                DATE_MODIFIED = SYSDATE             在哪里MEM_ID = i_mem_id(i)

        INSERT INTO MEMBER_CLASS (MEMBER_CLASS_ID,
                           MEM_ID,
                           START_DATE,
                           END_DATE,
                           DATE,
                           USER_CREATED,
                           DATE_CREATED,
                           REQUEST_SOURCE,
                           )
              VALUES     (1,
                         i_mem_id(i),
                         i_start_date(i),
                         i_end_date(i),
                         i_date(i),
                         i_user_created,
                         SYSDATE,
                         i_request_source(i),
                         );
  END LOOP;
  o_result := 1;
  COMMIT;
  END sp_add_member;

在调用该函数后,我无法转换成PostgreSQL

0 个答案:

没有答案