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

📄 plgstk.spb

📁 Oracle PL/SQL procedure generator (second generator type)
💻 SPB
字号:
CREATE OR REPLACE PACKAGE BODY PLGstk 
IS
/*----------------------------------------------------------------
||                  PL/Vision Professional 
||----------------------------------------------------------------
||    File: PLGstk.spb
||  Author: Steven Feuerstein
||
|| This is a part of the PL/Vision Professional Code library.
|| Copyright (C) 1996-99 Quest Software, Inc.
|| All rights reserved.
||
|| For more information, call Quest Software at 1-800-REVEAL4
|| or check out our Web page: www.Quest Software.com
||
******************************************************************/
   c_pkg CONSTANT PLGadmin.identifier := 'plgstk';

   PROCEDURE destroy (stack_in IN VARCHAR2 := defstk) IS
   /*
   || A pass-through directly to the list package.
   */
   BEGIN
      PLGlst.destroy (stack_in);
   END;

   PROCEDURE make
      (stack_in IN VARCHAR2 := defstk,
       overwrite_in IN BOOLEAN := TRUE)
   IS
   /* A pass-through directly to the list package. */
   BEGIN
      IF overwrite_in AND PLGlst.is_made (stack_in) 
      THEN
         PLGlst.destroy (stack_in);
      END IF;

      PLGlst.make (stack_in);
   END;

   PROCEDURE push
     (item_in IN VARCHAR2, stack_in IN VARCHAR2 := defstk)
   IS
   /*
   || A pass-through directly to the list package. Remember: 
   || push always adds an item to the end of the list.
   */
   BEGIN
      PLGlst.appenditem (stack_in, item_in);
   END;

   PROCEDURE pop 
      (value_out IN OUT VARCHAR2, 
       stack_in IN VARCHAR2 := defstk,
       stack_type_in IN VARCHAR2 := lifo) 
   IS
      stack_count INTEGER := PLGlst.nitems (stack_in);

      /* The row of the item to pop. 
         If FIFO, pop first item. */
      row_to_pop INTEGER := 1;

   BEGIN
     IF stack_count = 0 OR stack_count IS NULL
     THEN
        value_out := NULL;
     ELSE
        IF UPPER (stack_type_in) = lifo
        THEN
           /* Pop the very last item in the list. */
           row_to_pop := stack_count;
        END IF;

        /* Get the value with getitem, then remove the item. */
        value_out := PLGlst.getitem (stack_in, row_to_pop);

        PLGlst.deleteitem (stack_in, row_to_pop);
     END IF;
   END;

   FUNCTION nitems (stack_in IN VARCHAR2 := defstk) 
      RETURN INTEGER
   IS
   BEGIN
      RETURN PLGlst.nitems (stack_in);
   END;

   FUNCTION itemin 
      (stack_in IN VARCHAR2, item_in IN VARCHAR2) RETURN BOOLEAN
   IS
   BEGIN
      RETURN 
         (PLGlst.getposition (stack_in, item_in) != 0);
   END;
END PLGstk;
/

⌨️ 快捷键说明

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