躲不开的心痛 2019-04-15 21:43 采纳率: 0%
浏览 303
已结题

怎样写这样的一个定时job

declare
  v_msg varchar2(200);
  v_msg1 varchar2(200);
begin
  for cur in (select * from wbjol_id) loop
    RECOVERSODATAFROMSOHIS.PROCRECOVERFIRST(cur.ol_id,
                         v_msg,
                         v_msg1);
  end loop;
end;
这个是游标调用存储过程  RECOVERSODATAFROMSOHIS.PROCRECOVERFIRST这个是存过
CREATE OR REPLACE PACKAGE BODY RECOVERSODATAFROMSOHIS IS
  PROCEDURE PROCRECOVERFIRST(OLID      IN NUMBER,
                             RESULTID  OUT VARCHAR2,
                             RESULTMSG OUT VARCHAR2) IS
    STR_SQL          VARCHAR2(1000);
    TABLE_ID         TRANSFER_SO_TABLE.ID%TYPE;
    TABLE_NAME       TRANSFER_SO_TABLE.TABLE_NAME%TYPE;
    KEY_ID       TRANSFER_SO_TABLE.KEY_ID%TYPE;
    V_CNT            INTEGER;
    V_SUB_RESULT_MSG VARCHAR2(500);
    V_COL_STR        VARCHAR2(1000);
  BEGIN

    RESULTID  := 0;
    RESULTMSG := '';

    --取得购物车表
    SELECT A.ID, A.TABLE_NAME, A.KEY_ID
      INTO TABLE_ID, TABLE_NAME,KEY_ID
      FROM TRANSFER_SO_TABLE A
     WHERE A.ID = 1;

    STR_SQL := 'select COUNT(1)
                    from so_his.' || TABLE_NAME ||' ol
                   where ol.' || KEY_ID ||' = :1';
    EXECUTE IMMEDIATE STR_SQL INTO V_CNT USING OLID;
    IF V_CNT > 0 THEN
      --取表字段
      V_COL_STR := GETTABCOL(TABLE_NAME);
      STR_SQL := 'insert into so.' || TABLE_NAME || '
                select '||V_COL_STR||' from so_his.' || TABLE_NAME ||
                 ' ol where ol.' || KEY_ID || ' = :1';
      EXECUTE IMMEDIATE STR_SQL USING OLID;

      PROCRECOVERSEC(OLID, TABLE_ID, RESULTID, V_SUB_RESULT_MSG);

      STR_SQL := 'delete from so_his.' || TABLE_NAME ||
                 ' ol where ol.' || KEY_ID || ' = :1';
      EXECUTE IMMEDIATE STR_SQL USING OLID;
    END IF;
    IF (RESULTID = 1) THEN
      RESULTMSG := SUBSTR(RESULTMSG || V_SUB_RESULT_MSG, 1, 500);
    ELSE
      RESULTMSG := '成功';
    END IF;

  EXCEPTION
    WHEN OTHERS THEN
      RESULTID  := 1;
      RESULTMSG := RESULTMSG || SUBSTR(SQLERRM, 1, 400);
  END;
这个是存过 我该怎么写这个job ,小白  求帮助
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-04-16 00:07
    关注
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站