Advertisement
ExaGridDba

out_pkg: printf, die, assert for PL/SQL

Nov 2nd, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 9.36 KB | None | 0 0
  1. CREATE OR REPLACE PACKAGE "OUT_PKG"
  2. IS
  3. TYPE type_tab_strings
  4. IS
  5.   TABLE OF clob;
  6.  
  7.   FUNCTION sprintf(
  8.       p_format IN clob,
  9.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  10.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  11.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  12.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  13.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  14.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  15.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  16.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  17.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  18.     RETURN clob;
  19.  
  20.   PROCEDURE printf(
  21.       p_format IN clob,
  22.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  23.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  24.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  25.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  26.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  27.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  28.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  29.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  30.       p_arg9   IN VARCHAR2 DEFAULT NULL);
  31.  
  32.   PROCEDURE die(
  33.       p_format IN clob DEFAULT 'died',
  34.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  35.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  36.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  37.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  38.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  39.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  40.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  41.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  42.       p_arg9   IN VARCHAR2 DEFAULT NULL);
  43.  
  44.   FUNCTION die(
  45.       p_format IN clob DEFAULT 'died',
  46.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  47.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  48.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  49.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  50.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  51.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  52.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  53.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  54.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  55.     RETURN VARCHAR2;
  56.  
  57.   PROCEDURE assert(
  58.       p_condition IN BOOLEAN,
  59.       p_format    IN VARCHAR2 DEFAULT 'assertion failed',
  60.       p_arg1      IN VARCHAR2 DEFAULT NULL,
  61.       p_arg2      IN VARCHAR2 DEFAULT NULL,
  62.       p_arg3      IN VARCHAR2 DEFAULT NULL,
  63.       p_arg4      IN VARCHAR2 DEFAULT NULL,
  64.       p_arg5      IN VARCHAR2 DEFAULT NULL,
  65.       p_arg6      IN VARCHAR2 DEFAULT NULL,
  66.       p_arg7      IN VARCHAR2 DEFAULT NULL,
  67.       p_arg8      IN VARCHAR2 DEFAULT NULL,
  68.       p_arg9      IN VARCHAR2 DEFAULT NULL);
  69.  
  70.   PROCEDURE assert_is_not_null(
  71.       p_value  IN VARCHAR2,
  72.       p_format IN clob DEFAULT 'value',
  73.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  74.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  75.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  76.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  77.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  78.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  79.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  80.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  81.       p_arg9   IN VARCHAR2 DEFAULT NULL);
  82.  
  83.   PROCEDURE assert_is_null(
  84.       p_value  IN VARCHAR2,
  85.       p_format IN clob DEFAULT 'value',
  86.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  87.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  88.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  89.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  90.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  91.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  92.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  93.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  94.       p_arg9   IN VARCHAR2 DEFAULT NULL);
  95.  
  96.   FUNCTION join(
  97.       p_tab_strings IN type_tab_strings,
  98.       p_delimiter   IN VARCHAR2 := ',')
  99.     RETURN clob;
  100.  
  101.   FUNCTION boolean_to_number(
  102.       p_boolean IN BOOLEAN)
  103.     RETURN NUMBER;
  104.  
  105.   FUNCTION boolean_to_char(
  106.       p_boolean IN BOOLEAN)
  107.     RETURN VARCHAR2;
  108.  
  109.   FUNCTION dtchr(
  110.       p_date IN DATE)
  111.     RETURN VARCHAR2;
  112.  
  113.   FUNCTION chrdt(
  114.       p_char IN VARCHAR2)
  115.     RETURN DATE;
  116.  
  117. END out_pkg;
  118.  
  119. /
  120.  
  121. CREATE OR REPLACE PACKAGE BODY "OUT_PKG"
  122. IS
  123.  
  124.   FUNCTION sprintf(
  125.       p_format IN clob,
  126.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  127.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  128.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  129.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  130.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  131.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  132.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  133.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  134.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  135.     RETURN clob
  136.   IS
  137.   BEGIN
  138.  
  139.     RETURN utl_lms.format_message ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7, p_arg8, p_arg9);
  140.  
  141.   END sprintf;
  142.  
  143.   PROCEDURE printf(
  144.       p_format IN clob,
  145.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  146.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  147.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  148.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  149.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  150.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  151.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  152.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  153.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  154.   IS
  155.   BEGIN
  156.     DBMS_OUTPUT.put_line (sprintf ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7, p_arg8, p_arg9));
  157.  
  158.   END printf;
  159.  
  160.   PROCEDURE die(
  161.       p_format IN clob DEFAULT 'died',
  162.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  163.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  164.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  165.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  166.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  167.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  168.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  169.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  170.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  171.   IS
  172.   BEGIN
  173.     raise_application_error ( -20200, sprintf ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7,
  174.     p_arg8, p_arg9));
  175.  
  176.   END die;
  177.  
  178.   FUNCTION die(
  179.       p_format IN clob DEFAULT 'died',
  180.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  181.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  182.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  183.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  184.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  185.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  186.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  187.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  188.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  189.     RETURN VARCHAR2
  190.   IS
  191.   BEGIN
  192.     raise_application_error ( -20200, sprintf ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7,
  193.     p_arg8, p_arg9));
  194.  
  195.   END die;
  196.  
  197.   PROCEDURE assert(
  198.       p_condition IN BOOLEAN,
  199.       p_format    IN VARCHAR2 DEFAULT 'assertion failed',
  200.       p_arg1      IN VARCHAR2 DEFAULT NULL,
  201.       p_arg2      IN VARCHAR2 DEFAULT NULL,
  202.       p_arg3      IN VARCHAR2 DEFAULT NULL,
  203.       p_arg4      IN VARCHAR2 DEFAULT NULL,
  204.       p_arg5      IN VARCHAR2 DEFAULT NULL,
  205.       p_arg6      IN VARCHAR2 DEFAULT NULL,
  206.       p_arg7      IN VARCHAR2 DEFAULT NULL,
  207.       p_arg8      IN VARCHAR2 DEFAULT NULL,
  208.       p_arg9      IN VARCHAR2 DEFAULT NULL)
  209.   IS
  210.   BEGIN
  211.     $if $$disable_assertions $then NULL;
  212.     $else
  213.  
  214.     IF NOT p_condition THEN
  215.       die ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6, p_arg7, p_arg8, p_arg9);
  216.  
  217.     END IF;
  218.     $end
  219.  
  220.   END assert;
  221.  
  222.   PROCEDURE assert_is_not_null(
  223.       p_value  IN VARCHAR2,
  224.       p_format IN clob DEFAULT 'value',
  225.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  226.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  227.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  228.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  229.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  230.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  231.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  232.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  233.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  234.   IS
  235.   BEGIN
  236.     assert ( p_value IS NOT NULL, '%s is null', sprintf ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6,
  237.     p_arg7, p_arg8, p_arg9));
  238.  
  239.   END assert_is_not_null;
  240.  
  241.   PROCEDURE assert_is_null(
  242.       p_value  IN VARCHAR2,
  243.       p_format IN clob DEFAULT 'value',
  244.       p_arg1   IN VARCHAR2 DEFAULT NULL,
  245.       p_arg2   IN VARCHAR2 DEFAULT NULL,
  246.       p_arg3   IN VARCHAR2 DEFAULT NULL,
  247.       p_arg4   IN VARCHAR2 DEFAULT NULL,
  248.       p_arg5   IN VARCHAR2 DEFAULT NULL,
  249.       p_arg6   IN VARCHAR2 DEFAULT NULL,
  250.       p_arg7   IN VARCHAR2 DEFAULT NULL,
  251.       p_arg8   IN VARCHAR2 DEFAULT NULL,
  252.       p_arg9   IN VARCHAR2 DEFAULT NULL)
  253.   IS
  254.   BEGIN
  255.     assert ( p_value IS NULL, '%s is not null', sprintf ( p_format, p_arg1, p_arg2, p_arg3, p_arg4, p_arg5, p_arg6,
  256.     p_arg7, p_arg8, p_arg9));
  257.  
  258.   END assert_is_null;
  259.  
  260.   FUNCTION join(
  261.       p_tab_strings IN type_tab_strings,
  262.       p_delimiter   IN VARCHAR2 := ',')
  263.     RETURN clob
  264.   IS
  265.     l_joined_result clob;
  266.   BEGIN
  267.  
  268.     FOR i IN p_tab_strings.FIRST .. p_tab_strings.LAST
  269.     LOOP
  270.       l_joined_result := l_joined_result || p_tab_strings (i);
  271.  
  272.       IF i               < p_tab_strings.LAST THEN
  273.         l_joined_result := l_joined_result || p_delimiter;
  274.  
  275.       END IF;
  276.  
  277.     END LOOP;
  278.  
  279.     RETURN l_joined_result;
  280.  
  281.   END join;
  282.  
  283.   FUNCTION boolean_to_number(
  284.       p_boolean IN BOOLEAN)
  285.     RETURN NUMBER
  286.   IS
  287.   BEGIN
  288.  
  289.     RETURN
  290.  
  291.     CASE p_boolean
  292.     WHEN TRUE THEN
  293.       1
  294.     WHEN FALSE THEN
  295.       0
  296.     END;
  297.  
  298.   END boolean_to_number;
  299.  
  300.   FUNCTION boolean_to_char(
  301.       p_boolean IN BOOLEAN)
  302.     RETURN VARCHAR2
  303.   IS
  304.   BEGIN
  305.  
  306.     RETURN
  307.  
  308.     CASE p_boolean
  309.     WHEN TRUE THEN
  310.       'true'
  311.     WHEN FALSE THEN
  312.       'false'
  313.     END;
  314.  
  315.   END boolean_to_char;
  316.  
  317.   FUNCTION dtchr(
  318.       p_date IN DATE)
  319.     RETURN VARCHAR2
  320.   IS
  321.   BEGIN
  322.  
  323.     RETURN TO_CHAR(p_date,'yyyy-mm-dd');
  324.  
  325.   END dtchr;
  326.  
  327.   FUNCTION chrdt(
  328.       p_char IN VARCHAR2)
  329.     RETURN DATE
  330.   IS
  331.   BEGIN
  332.  
  333.     RETURN TO_DATE(p_char,'yyyy-mm-dd');
  334.  
  335.   END chrdt;
  336.  
  337. END out_pkg;
  338.  
  339. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement