Re: 3/4 to .75 (correction)

From: Marc <E.Mail_at_address.com>
Date: Fri, 25 Feb 2000 08:06:14 +0100
Message-ID: <8959qq$7d9$1_at_vkhdsu24.hda.hydro.com>


Following function has been tested:

create or replace FUNCTION parse_expression(p_expression IN VARCHAR2) RETURN NUMBER IS

  l_crs PLS_INTEGER;
  l_dummy PLS_INTEGER;
  l_number NUMBER;

BEGIN
  l_crs := dbms_sql.open_cursor;

  BEGIN
    dbms_sql.parse(l_crs, 'BEGIN :value := ' || p_expression || '; END;',dbms_sql.V7);

    dbms_sql.bind_variable(l_crs, 'value', l_number);     l_dummy := dbms_sql.execute(l_crs);
    dbms_sql.variable_value(l_crs, 'value', l_number);    dbms_sql.close_cursor(l_crs);
  EXCEPTION
    WHEN OTHERS THEN -- e.g. division by zero, value error, not a number,...

  • don't forget to close the cursor dbms_sql.close_cursor(l_crs);
    • and return the error message to the calling application RAISE; END;
  RETURN l_number;
END;
/

Marc wrote in message <8958ef$5gd$1_at_vkhdsu24.hda.hydro.com>... Received on Fri Feb 25 2000 - 08:06:14 CET

Original text of this message