Search code examples
oracle-databasefunctionplsqlreturn-valuedeclaration

PL/SQL How to call a function without getting returned object


I have a function in PL/SQL:

FUNCTION do_something
  RETURN BOOLEAN
IS
  ...
BEGIN
  ...
END

This function can be called as such:

DECLARE
  answer BOOLEAN;
BEGIN
  answer := do_something();
END

Now, there are cases, where I don't need the returned boolean. If I don't want to get it and just write:

do_something();

I get PLS-00306 (wrong number of types of arguments in call to DO_SOMETHING) Is there a way to call it without declaring and setting a new boolean, which I will never use in this case?


Solution

  • Very simple: create a procedure which covers this function

    PROCEDURE do_something
    IS
      dummy boolean;
    BEGIN
      dummy := do_something();
    END;
    

    Sorry, but this is the only way in PL/SQL. This language is very strict in definitions of procedure and function and you cannot make a function call without handling the result. But you can make a procedure as it is shown in example above.

    It will define automatically where to choose the function and where the procedure.

    EDIT

    As far as there are people who do not trust me (sometimes I really tell bad things so doubts are allowed :) ) this is the test:

    declare
      myresult boolean;
    
      function do_something return boolean
        is
      begin
        return true;
      end;
    
      procedure do_something
        is
          dummy boolean;
      begin
        dummy := do_something();
      end;
    begin
      myresult := do_something();
    
      do_something();
    end;
    

    works well.