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

📄 plgplsql.spb

📁 Oracle PL/SQL procedure generator (second generator type)
💻 SPB
📖 第 1 页 / 共 3 页
字号:
   PROCEDURE set_composite_return
      (prog IN VARCHAR2,
       compname IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      set_composite (prog, c_return, compname, sch);
   END;

   FUNCTION composite
      (prog IN VARCHAR2,
       argname IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN
         NVL (PLGdoir.colval (driver, prog, argname, c_composite, 1, sch => sch),
            argname);
   END;

   FUNCTION composite_return
      (prog IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN composite (prog, c_return, sch);
   END;

   PROCEDURE set_composite
      (pkg IN VARCHAR2,
       prog IN VARCHAR2,
       ovrload IN INTEGER,
       argname IN VARCHAR2,
       compname IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      PLGdoir.ins (driver,
         sch, pkg || '.' || prog, PLGdoir.c_table, argname,
         PLGdoir.c_column, c_composite, NVL(ovrload, 0), compname);
   END;

   PROCEDURE set_composite_return
      (pkg IN VARCHAR2,
       prog IN VARCHAR2,
       ovrload IN INTEGER,
       compname IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      set_composite (pkg, prog, ovrload, c_return, compname, sch);
   END;

   FUNCTION composite
      (pkg IN VARCHAR2,
       prog IN VARCHAR2,
       ovrload IN INTEGER,
       argname IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN
         NVL (PLGdoir.colval (
                driver, pkg || '.' || prog, argname, c_composite, NVL (ovrload, 0), sch => sch),
              argname);
   END;

   FUNCTION composite_return
      (pkg IN VARCHAR2,
       prog IN VARCHAR2,
       ovrload IN INTEGER,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN composite (pkg, prog, ovrload, c_return, sch);
   END;

   PROCEDURE setconvtype
      (prog IN VARCHAR2,
       orig_type IN VARCHAR2,
       convert_to IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      PLGdoir.ins (driver,
         sch, prog, PLGdoir.c_table, orig_type,
         PLGdoir.c_column, c_converted_type, 1, convert_to);
   END;

   FUNCTION convtype
      (prog IN VARCHAR2,
       orig_type IN VARCHAR2,
       sch IN VARCHAR2 := NULL,
       fullval IN BOOLEAN := FALSE)
      RETURN VARCHAR2
   IS
      v_loc PLS_INTEGER;
      retval PLGadmin.dbmaxvc2;
   BEGIN
      retval := PLGdoir.colval (driver, prog, orig_type, c_converted_type, 1, sch => sch);
      v_loc := INSTR (retval, c_delim);

      IF v_loc > 0 AND NOT fullval
      THEN
         retval := PLGstr.betwn (retval, 1, v_loc-1);
      END IF;

      RETURN NVL (retval, orig_type);
   END;

   PROCEDURE setboolconv
      (prog IN VARCHAR2,
       convert_type IN VARCHAR2,
       trueval IN VARCHAR2,
       falseval IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      setconvtype (prog, 'BOOLEAN', convert_type || c_delim || trueval || c_delim || falseval, sch);
   END;

   FUNCTION boolconvtype
      (prog IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
      retval PLGadmin.dbmaxvc2;
   BEGIN
      retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
      IF retval IS NOT NULL
      THEN
         retval := PLGstr.betwn (retval, 1, INSTR (retval, c_delim)-1);
      END IF;
      RETURN NVL (retval, 'BOOLEAN');
   END;

   FUNCTION booltrueval
      (prog IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
      retval PLGadmin.dbmaxvc2;
   BEGIN
      retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
      IF retval IS NOT NULL
      THEN
         retval := PLGstr.betwn (retval, INSTR (retval, c_delim)+1, INSTR (retval, c_delim, 1, 2)-1);
      END IF;
      RETURN NVL (retval, 'TRUE');
   END;

   FUNCTION boolfalseval
      (prog IN VARCHAR2,
       sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
      retval PLGadmin.dbmaxvc2;
   BEGIN
      retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
      IF retval IS NOT NULL
      THEN
         retval := SUBSTR (retval, INSTR (retval, c_delim, 1, 2)+1);
      END IF;
      RETURN NVL (retval, 'FALSE');
   END;

   FUNCTION fromplsql_val (sch IN VARCHAR2, prog IN VARCHAR2, argname IN VARCHAR2, dtype IN INTEGER)
      RETURN VARCHAR2
   /* Converts a PL/SQL datatype to the converted type. */
   IS
      retval PLGadmin.dbmaxvc2 := argname;
   BEGIN
      IF dtype = PLGdesc.c_boolean
      THEN
         IF boolconvtype (prog, sch) != 'BOOLEAN'
         THEN
             retval := 'ifelse(' || argname ||
                ',' || booltrueval (prog, sch) ||
                ',' || boolfalseval (prog, sch) ||
                ')';
         END IF;
      END IF;
      RETURN retval;
   END;

   FUNCTION toplsql_val (
      sch IN VARCHAR2,
      prog IN VARCHAR2,
      argname IN VARCHAR2,
      dtype IN INTEGER)
   RETURN VARCHAR2
   /* Converts a non PL/SQL datatype to the PL/SQL type. */
   IS
      retval PLGadmin.dbmaxvc2 := argname;
   BEGIN
      IF dtype = PLGdesc.c_boolean
      THEN
         IF boolconvtype (prog, sch) != 'BOOLEAN'
         THEN
             retval := argname || '=' || booltrueval (prog, sch);
         END IF;
      END IF;
      RETURN retval;
   END;

   PROCEDURE set_ibtab_conversion (
      pkg IN VARCHAR2,
      prog IN VARCHAR2,
      ovrload IN INTEGER,
      argname IN VARCHAR2,
      convtype IN INTEGER, /* delimited or fixed length */
      itemdelim IN VARCHAR2 :=NULL,
      segdelim IN VARCHAR2 := NULL,
      sch IN VARCHAR2 := NULL)
   IS
   BEGIN
      PLGdoir.ins (driver,
         sch, pkg || '.' || prog, PLGdoir.c_table, argname,
         PLGdoir.c_column, c_ibtab_conv, NVL(ovrload, 0),
         convtype || c_delim || itemdelim || c_delim || segdelim);
   END;

   FUNCTION ibtab_conv (
      pkg IN VARCHAR2,
      prog IN VARCHAR2,
      ovrload IN INTEGER,
      argname IN VARCHAR2,
      sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
   BEGIN
      RETURN
         NVL (PLGdoir.colval (
                driver, pkg || '.' || prog, argname, c_ibtab_conv, NVL (ovrload, 0), sch => sch),
              argname);
   END;

   FUNCTION ibtab_convtype (
      pkg IN VARCHAR2,
      prog IN VARCHAR2,
      ovrload IN INTEGER,
      argname IN VARCHAR2,
      sch IN VARCHAR2 := NULL)
      RETURN INTEGER
   IS
      v_conv PLG_doir.info%TYPE;
   BEGIN
      v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
      RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 0, inclusive => FALSE);
   END;

   FUNCTION ibtab_itemdelim (
      pkg IN VARCHAR2,
      prog IN VARCHAR2,
      ovrload IN INTEGER,
      argname IN VARCHAR2,
      sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
      v_conv PLG_doir.info%TYPE;
   BEGIN
      v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
      RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 1, inclusive=>FALSE);
   END;

   FUNCTION ibtab_segdelim (
      pkg IN VARCHAR2,
      prog IN VARCHAR2,
      ovrload IN INTEGER,
      argname IN VARCHAR2,
      sch IN VARCHAR2 := NULL)
      RETURN VARCHAR2
   IS
      v_conv PLG_doir.info%TYPE;
   BEGIN
      v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
      RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 2, inclusive=>FALSE, gotoend=>TRUE);
   END;

END PLGplsql;
/

⌨️ 快捷键说明

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