⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plgdoir.spb

📁 Oracle PL/SQL procedure generator (second generator type)
💻 SPB
📖 第 1 页 / 共 5 页
字号:
         c_delim ||
         PLGbool.stg (setcontext, c_truefalse) ||
         c_delim ||
         successval ||
         c_delim ||
         failureval ||
         c_delim ||
         failuremsg;
      RETURN retval;
   END;

   PROCEDURE setpsexc (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      raisemech IN VARCHAR2 := NULL,
      handlemech IN VARCHAR2 := NULL,
      sch IN VARCHAR2 := NULL
      )
   IS
      v_rowval PLGadmin.dbmaxvc2;
   BEGIN

      --plvlog.put_line (tab || '-' || raisemech || '-' || handlemech || '-' || sch);
      /* Pack up all the information and stuff into row. Same order of data as in record. */
      v_rowval :=
         packed_excinfo (
            c_psexc,
            NVL (raisemech, alias (drv, tab, plgalias (c_psraise), sch => sch)),
            NVL (handlemech, alias (drv, tab, plgalias (c_pshandle), sch => sch)),
            NULL,
            alias (drv, tab, plgalias (c_successval), sch => sch),
            alias (drv, tab, plgalias (c_failureval), sch => sch),
            alias (drv, tab, plgalias (c_failuremsg), sch => sch)
         );
      multitabset (
         drv,
         tab,
         c_exchdlg,
         v_rowval,
         1,
         sch,
         convert_val => FALSE,
         remove_conflicts => c_plvexc || ',' || c_retcd
      );
   END;

   PROCEDURE setplvexc (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      raisemech IN VARCHAR2 := NULL,
      handlemech IN VARCHAR2 := NULL,
      setcontext IN BOOLEAN := FALSE,
      sch IN VARCHAR2 := NULL
      )
   IS
      v_rowval PLGadmin.dbmaxvc2;
   BEGIN

      /* Pack up all the information and stuff into row.
         Same order of data as in record. */
      v_rowval :=
         packed_excinfo (
            c_plvexc,
            NVL (raisemech, alias (drv, tab, plgalias (c_plvraise), sch => sch)),
            NVL (handlemech, alias (drv, tab, plgalias (c_plvhandle), sch => sch)),
            setcontext,
            alias (drv, tab, plgalias (c_successval), sch => sch),
            alias (drv, tab, plgalias (c_failureval), sch => sch),
            alias (drv, tab, plgalias (c_failuremsg), sch => sch)
         );
      multitabset (
         drv,
         tab,
         c_exchdlg,
         v_rowval,
         1,
         sch,
         convert_val => FALSE,
         remove_conflicts => c_psexc || ',' || c_retcd
      );
   END;

   PROCEDURE setretcd (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      raisemech IN VARCHAR2 := NULL,
      handlemech IN VARCHAR2 := NULL,
      successval IN VARCHAR2 := 0,
      failureval IN VARCHAR2 := NULL,

      /* = SQLCODE */
      failuremsg IN VARCHAR2 := NULL,

      /* = SQLERRM */
      sch IN VARCHAR2 := NULL
      )
   IS
      v_rowval PLGadmin.dbmaxvc2;
   BEGIN

      /* Pack up all the information and stuff into row.
         Same order of data as in record. */
      v_rowval :=
         packed_excinfo (
            c_retcd,
            NVL (raisemech,  alias (drv, tab, plgalias (c_rcraise), sch => sch)),
            NVL (handlemech, alias (drv, tab, plgalias (c_rchandle), sch => sch)),
            NULL,
            NVL (successval, alias (drv, tab, plgalias (c_successval), sch => sch)),
            NVL (failureval, alias (drv, tab, plgalias (c_failureval), sch => sch)),
            NVL (failuremsg, alias (drv, tab, plgalias (c_failuremsg), sch => sch))
         );
      multitabset (
         drv,
         tab,
         c_exchdlg,
         v_rowval,
         1,
         sch,
         convert_val => FALSE,
         remove_conflicts => c_psexc || ',' || c_plvexc
      );
   END;

   PROCEDURE usexmn (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      setactive (drv, tab, c_usingxmn, sch);
   END;

   PROCEDURE nousexmn (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      setinactive (drv, tab, c_usingxmn, sch);
   END;


   /* Column-level information */
   PROCEDURE hidecol (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      col IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      ins (drv, sch, tab, c_table, col, c_column, c_hidden, 1, c_true);
   END;

   PROCEDURE nohidecol (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      col IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      ins (drv, sch, tab, c_table, col, c_column, c_hidden, 1, c_false);
   END;

   PROCEDURE updatecol (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      col IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      ins (drv, sch, tab, c_table, col, c_column, c_updcol, 1, c_true);
   END;

   PROCEDURE noupdatecol (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      col IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      ins (drv, sch, tab, c_table, col, c_column, c_updcol, 1, c_false);
   END;

   PROCEDURE setcolfunc (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      col IN VARCHAR2,
      func IN PLG_doir.info%TYPE,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      ins (drv, sch, tab, c_table, col, c_column, c_colfunc, 1, func);
   END;


   /* Enable SELECT FOR UPDATE option */
   PROCEDURE setsfu (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      sfucols IN VARCHAR2 := 'FOR UPDATE',
      dontwait IN BOOLEAN := FALSE,
      sch IN VARCHAR2 := NULL
      )
   IS
      v_sfu    PLGadmin.dbmaxvc2;
   BEGIN
      IF UPPER (v_sfu) NOT LIKE 'FOR UPDATE%'
      THEN
         v_sfu := 'FOR UPDATE OF ' || sfucols;
      END IF;

      IF dontwait
      THEN
         v_sfu := v_sfu || ' NOWAIT';
      END IF;

      multitabset (drv, tab, c_sfu, v_sfu, 1, sch, convert_val => FALSE);
   END;

   FUNCTION sfu (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN tabinfo (drv, tab, c_sfu, sch => sch);
   END;


   /* Cursor definitions */
   FUNCTION maxcurseq (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
      RETURN INTEGER
   IS
      CURSOR seq_cur
      IS
         SELECT MAX (infoseq) maxseq
           FROM PLG_doir
          WHERE driver = UPPER (drv)
            AND owner = UPPER (NVL (sch, g_schema))
            AND objname = UPPER (tab)
            AND objtype = c_table
            AND infotype = c_curinfo;

      retval    PLS_INTEGER;
   BEGIN
      OPEN seq_cur;
      FETCH seq_cur INTO retval;
      RETURN retval;
   END;

   PROCEDURE setcurinfo (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      cur IN VARCHAR2,
      collist IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
      v_seq     PLG_doir.infoseq%TYPE;
   BEGIN
      PLGpriv.assert (tab, sch, PLGpriv.modobj);
      v_seq := NVL (maxcurseq (drv, tab, sch), 0) + 1;
      multitabset (
         drv,
         tab,
         c_curinfo,
         cur || c_delim || collist,
         v_seq,
         sch,
         convert_val => FALSE
      );
   END;

   FUNCTION curinfo (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
      RETURN curinfo_tabtype
   IS
      retval    curinfo_tabtype;
   BEGIN
      FOR rec IN curinfo_cur (drv, sch, tab)
      LOOP
         retval  (curinfo_cur%rowcount).curname := rec.curname;
         retval  (curinfo_cur%rowcount).collist := rec.collist;
         retval  (curinfo_cur%rowcount).objid := rec.objid;
      END LOOP;

      RETURN retval;
   END;

   PROCEDURE setalias (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2,
      aliastype IN VARCHAR2,
      ident_query IN VARCHAR2,
      ident_list IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
      v_ident PLGadmin.dbmaxvc2;
   BEGIN
      IF aliastype = c_ident_alias
      THEN
         v_ident := ident_query || c_delim || ident_list;
      ELSE
         v_ident := c_global;
      END IF;

      ins (
         drv,
         sch,
         objname_in => tab,
         objtype_in => c_alias,
         attrname_in => orig,
         attrtype_in => UPPER (NVL (aliastype, c_misc_alias)),
         infotype_in => v_ident,
         seq_in => 1,
         info_in => subst,
         doc_in => descrip
      );
   END;

   PROCEDURE setalias (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      setalias (drv, tab, orig, subst, NULL, c_misc_alias, NULL, NULL, sch);
   END;

   PROCEDURE setPLGalias (
      drv IN VARCHAR2,
      tab IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2,
      aliastype IN VARCHAR2,
      ident_query IN VARCHAR2,
      ident_list IN VARCHAR2,
      sch IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
      setalias (drv,
         tab, plgalias || orig, subst, descrip,
         aliastype, ident_query, ident_list, sch);
   END;

   PROCEDURE set_global_alias (
      drv IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2 := NULL,
      aliastype IN VARCHAR2 := NULL,
      ident_query IN VARCHAR2 := NULL,
      ident_list IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
      setalias (
         drv,
         c_global,
         plgalias || orig,
         subst,
         descrip,
         aliastype,
         NULL,
         NULL,
         sch => c_global
      );
   END;

   PROCEDURE set_cust_alias (
      drv IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
      setalias (
         drv,
         c_global,
         orig,
         subst,
         descrip,
         c_cust_alias,
         NULL,
         NULL,
         sch => c_global
      );
   END;

   PROCEDURE set_ident (
      drv IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      setPLGalias (
         drv,
         c_global,
         orig,
         subst,
         descrip,
         c_ident_alias,
         NULL,
         NULL,
         sch => c_global
      );
   END;

   PROCEDURE set_tag (
      drv IN VARCHAR2,
      tag IN VARCHAR2,
      xmpl IN VARCHAR2 := NULL,
      descrip IN VARCHAR2 := NULL,
      otag IN VARCHAR2 := NULL,
      ctag IN VARCHAR2 := NULL
      )
   IS
      v_tag     PLGadmin.identifier
         := RTRIM (LTRIM (tag, otag), ctag);
   BEGIN
      setalias (
         drv,
         c_tag_alias,
         v_tag,
         xmpl,
         descrip,
         c_tag_alias,
         NULL,
         NULL,
         sch => c_global
      );
   END;

   FUNCTION is_tag (
      drv IN VARCHAR2,
      nm IN VARCHAR2,
      otag IN VARCHAR2 := NULL,
      ctag IN VARCHAR2 := NULL
      )
      RETURN BOOLEAN
   IS
   BEGIN
      RETURN tag_descrip (drv, nm, otag, ctag) IS NOT NULL;
   END;

   FUNCTION tag_descrip (
      drv IN VARCHAR2,
      nm IN VARCHAR2,
      otag IN VARCHAR2 := NULL,
      ctag IN VARCHAR2 := NULL
      )
      RETURN VARCHAR2
   IS
      v_nm      PLGadmin.identifier
         := RTRIM (LTRIM (nm, otag), ctag);
   BEGIN
      RETURN alias_descrip (drv, c_tag_alias, v_nm, PLGdoir.c_global);
   END;

   FUNCTION tag_example (
      drv IN VARCHAR2,
      nm IN VARCHAR2,
      otag IN VARCHAR2 := NULL,
      ctag IN VARCHAR2 := NULL
      )
      RETURN VARCHAR2
   IS
      v_nm      PLGadmin.identifier
         := RTRIM (LTRIM (nm, otag), ctag);
   BEGIN
      RETURN alias (drv, c_tag_alias, v_nm, PLGdoir.c_global);
   END;

   PROCEDURE set_colident (
      drv IN VARCHAR2,
      orig IN VARCHAR2,
      subst IN VARCHAR2,
      descrip IN VARCHAR2 := NULL,
      override IN VARCHAR2 := NULL
      )
   IS
   BEGIN
      setPLGalias (
         drv,
         c_global,
         orig,
         subst,
         descrip,
         c_ident_alias,
         'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS ' ||
         ' WHERE OWNER=:schema AND TABLE_NAME LIKE UPPER (:objname)',
         NVL (override, 'colname'),
         sch => c_global
      );
   END;

   PROCEDURE set_objident (
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -