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

📄 plggen.tst

📁 Oracle PL/SQL procedure generator (second generator type)
💻 TST
📖 第 1 页 / 共 5 页
字号:
   /* Programs to encapsulate keywords */

   FUNCTION bracketedval
      (text_in IN VARCHAR2,
       startval IN VARCHAR2,
       endval IN VARCHAR2 := objtagopen) RETURN VARCHAR2
   IS
   BEGIN
      RETURN RTRIM (PLGstr.betwn
         (text_in, startval, endval, inclusive=>FALSE, gotoend=>TRUE));
   END;

   /* 99.2 Reverse to simply see if there is no open bracket to
           process. */
   FUNCTION no_openobjtag (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN INSTR (text_in, objtagopen) = 0;
   END;

   FUNCTION is_cgml_start_command (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN (INSTR (c_cgml_start_commands, text_in || ',') > 0);
   END;

   FUNCTION is_cgml_set_option (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      /* Can always set a packaged variable. */
      IF INSTR (text_in, '.') > 0
      THEN
         RETURN TRUE;
      ELSE
         RETURN (INSTR (c_cgml_set_options, text_in || ',') > 0);
      END IF;
   END;

   FUNCTION defining_array (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_defarray OR  text_in = c_deftabarray;
   END;

   FUNCTION including (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_INCLUDE OR text_in = c_SPECIAL;
   END;

   FUNCTION is_special (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_SPECIAL;
   END;

   FUNCTION including_header (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_header;
   END;

   FUNCTION iscomment (line_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN LTRIM (line_in) LIKE c_comment;
   END;

   FUNCTION raising_exception (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_RAISE;
   END;

   FUNCTION handling_exception (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_HANDLE;
   END;

   FUNCTION start_if_clause (
      text_in IN VARCHAR2, true_start_in IN BOOLEAN) RETURN BOOLEAN
   IS
      retval BOOLEAN := text_in IN (c_if, c_ifnot);
   BEGIN
      IF NOT true_start_in
      THEN
         retval := retval OR text_in IN (c_elsif, c_elsifnot);
      END IF;
      RETURN retval;
   END;

   FUNCTION end_if_clause (
      text_in IN VARCHAR2, true_start_in IN BOOLEAN) RETURN BOOLEAN
   IS
      retval BOOLEAN := text_in IN (c_endif, c_end_if, c_endif2);
   BEGIN
      IF NOT true_start_in
      THEN
         retval := retval OR
            text_in IN (c_else, c_elsif, c_elsifnot, c_elseif, c_elseifnot);
      END IF;
      RETURN retval;
   END;

   FUNCTION startsif (
      text_in IN VARCHAR2,
      true_start_in IN BOOLEAN := FALSE)
      RETURN BOOLEAN
   IS
   BEGIN
      RETURN start_if_clause (text_in, true_start_in);

      /* 99.2 No longer needed
      ELSE
         RETURN start_if_clause (
            PLGstr.betwn (text_in, objtagopen, objtagclose, inclusive=>FALSE),
            true_start_in);
      END IF;
      */
   END;

   FUNCTION endsif (
      text_in IN VARCHAR2, true_end_in IN BOOLEAN := FALSE)
      RETURN BOOLEAN
   IS
   BEGIN
      RETURN end_if_clause (
         text_in,
            /* 99.2 Already parsed...
               PLGstr.betwn (text_in,
                  objtagopen, objtagclose, inclusive=>FALSE),
            */
         true_end_in);
   END;

   FUNCTION endsforeach (text_in IN VARCHAR2)
      RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_endforeach OR text_in = c_endforeach2;
   END;

   FUNCTION endsdefarray (text_in IN VARCHAR2)
      RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_enddefarray OR text_in = c_enddefarray2;
   END;

   FUNCTION startstotarget (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_TOTEMP OR
             text_in = c_TOFILE OR
             text_in = c_TOTARGET OR
             text_in = c_RTO;
   END;

   FUNCTION endstotarget (start_in IN VARCHAR2, text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN (
         (text_in = c_ENDTOTEMP AND start_in = c_TOTEMP) OR
         (text_in = c_ENDTOFILE AND start_in = c_TOFILE) OR
         (text_in = c_ENDTOTARGET AND start_in = c_TOTARGET) OR
         (text_in = c_ENDTOTEMP2 AND start_in = c_TOTEMP) OR
         (text_in = c_ENDTOFILE2 AND start_in = c_TOFILE) OR
         (text_in = c_ENDRTO AND start_in = c_RTO) OR
         (text_in = c_ENDRTO2 AND start_in = c_RTO) OR
         (text_in = c_ENDTOTARGET2 AND start_in = c_TOTARGET)
         );
   END;

   FUNCTION startscleanup (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_cleanup;
   END;

   FUNCTION endscleanup (start_in IN VARCHAR2, text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN (
         (text_in = c_endcleanup AND start_in = c_cleanup) OR
         (text_in = c_endcleanup2 AND start_in = c_cleanup)
         );
   END;

   FUNCTION requestscleanup (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_docleanup;
   END;

   FUNCTION storein (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_STOREIN;
   END;

   FUNCTION close_storein (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_CLOSE_cmd;
   END;

   FUNCTION exec_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN (text_in IN (c_exec, c_execrto));
   END;

   FUNCTION execrto_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_execrto;
   END;

   FUNCTION execfile_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_execfile;
   END;

   FUNCTION stop_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_stop;
   END;

   FUNCTION settingvar (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_set;
   END;

   FUNCTION settingalias (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN text_in = c_SETALIAS;
   END;

   FUNCTION ends_read_ahead
      (starttext_in IN VARCHAR2, currtext_in IN VARCHAR2) RETURN BOOLEAN
   IS
      retval BOOLEAN;
   BEGIN
      IF debugging
      THEN
         pl ('ends read ahead start curr ' || starttext_in || '-' || currtext_in);
      END IF;

      IF starttext_in = c_FOREACH
      THEN
         retval := endsforeach (currtext_in);

      ELSIF starttext_in = c_if
      THEN
         retval := endsif (currtext_in);

      ELSIF starttext_in = c_else
      THEN
         retval := endsif (currtext_in, TRUE);

      ELSIF starttext_in = c_defarray
      THEN
         retval := endsdefarray (currtext_in);

      ELSIF startstotarget (starttext_in)
      THEN
         retval := endstotarget (starttext_in, currtext_in);

      ELSIF startscleanup (starttext_in)
      THEN
         retval := endscleanup (starttext_in, currtext_in);

      ELSE
         PLGerr.raise (
            PLGerr.unmatched_readahead,
            'No [END***] statement found for ' || starttext_in);
      END IF;

      RETURN retval;
   END;

   /* Embedded tag functions */

   FUNCTION appendloc (text_in IN VARCHAR2) RETURN PLS_INTEGER
   IS
   BEGIN
      RETURN INSTR (text_in, vt_APPEND);
   END;

   FUNCTION replaceloc (text_in IN VARCHAR2) RETURN PLS_INTEGER
   IS
   BEGIN
      RETURN INSTR (text_in, vt_replace);
   END;

   FUNCTION appending (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN appendloc (text_in) > 0;
   END;

   FUNCTION replacetarget (text_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN replaceloc (text_in) > 0;
   END;

   /* Array characteristics functions */

   FUNCTION nested_loop (lt IN VARCHAR2) RETURN BOOLEAN
   IS
      retval BOOLEAN;
   BEGIN
      retval := lt IN
         (c_fkycol, c_uindcol, c_fkydesc, c_fkydesccol, c_conscol);
      RETURN retval;
   END;

   FUNCTION offset_loop (lt IN VARCHAR2) RETURN BOOLEAN
   IS
      retval BOOLEAN;
   BEGIN
      retval := lt IN (c_arg, c_argsep, c_argfromsep, c_retarg);
      RETURN retval;
   END;

   FUNCTION alias_loop (lt IN VARCHAR2) RETURN BOOLEAN
   IS
      retval BOOLEAN;
   BEGIN
      retval := lt IN (c_argfromsep);
      RETURN retval;
   END;

   FUNCTION indirect_loop (lt IN VARCHAR2) RETURN BOOLEAN
      /* Not just a pointer to gencol. */
   IS
      retval BOOLEAN;
   BEGIN
      retval := lt IN
         (c_pkycol, c_fkycol, c_uindcol, c_desccol, c_fkydesccol, c_conscol);
      RETURN retval;
   END;

   FUNCTION redirect_loop (lt IN VARCHAR2) RETURN BOOLEAN
      /* Just a pointer to gencol. */
   IS
      retval BOOLEAN;
   BEGIN
      retval := lt IN
         (c_updcol, c_notnullcol, c_nonpkycol, c_uconscol);
      RETURN retval;
   END;

   FUNCTION outer_loop (looptype IN VARCHAR2) RETURN VARCHAR2
   IS
      retval PLGadmin.identifier;
   BEGIN
      IF looptype = c_uindcol
      THEN
         retval := c_uind;

      ELSIF looptype = c_conscol
      THEN
         retval := c_cons;

      ELSIF looptype = c_fkycol
      THEN
         retval := c_fky;

      ELSIF looptype = c_fkydesc
      THEN
         retval := c_fky;

      ELSIF looptype = c_fkydesccol
      THEN
         retval := c_fkydesc;
      END IF;
      RETURN retval;
   END;

   FUNCTION same_as_outer_loop (
      innerloop IN VARCHAR2,
      outerloop IN VARCHAR2
      ) RETURN BOOLEAN
   IS
      retval BOOLEAN := FALSE;
   BEGIN
      IF innerloop = c_fkydesc AND outerloop = c_fky
      THEN
         retval := TRUE;
      END IF;

      RETURN retval;
   END;

/* Generation Programs */

   FUNCTION globalname (name_in IN VARCHAR2) RETURN VARCHAR2
   IS
      retval PLGadmin.dbmaxvc2 := LTRIM (name_in);
   BEGIN
      IF retval LIKE objtagopen || '%'
      THEN
         retval := PLGstr.betwn (retval, objtagopen, objtagclose, inclusive=>FALSE);
      END IF;

      IF INSTR (retval, '.') = 0
      THEN
         retval := 'PLGgenv.genrec.' || retval;
      END IF;

      RETURN retval;
   END;

   FUNCTION genrec_ptr (str IN VARCHAR2) RETURN PLS_INTEGER
   IS
   BEGIN
      /* Now look up hash value on qualifier. */
      BEGIN
         RETURN loop_hash (plghash (str));

⌨️ 快捷键说明

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