Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 596
Stefanos Kargas Avatar asked Feb 10 '14 12:02

Stefanos Kargas


People also ask

Can we create function without return in Oracle?

Oracle PL/SQL functions must have a return. If you declare your subprogram as a procedure, then it won't give you errors when it is lacking a return (procedures can't have a return). Show activity on this post. By definition, a function returns a value, so you must have a RETURN statement.

Which of the following is are true about calling a PL SQL function?

Which of the following is /are TRUE about calling a PL/SQL function? You need to define a function's purpose when creating it. Calling a function passes the program control to that function. In order to utilize a function, you must call it in order to accomplish the defined task.

What is function in PL SQL explain with example?

The PL/SQL Function is very similar to PL/SQL Procedure. The main difference between procedure and a function is, a function must always return a value, and on the other hand a procedure may or may not return a value. Except this, all the other things of PL/SQL procedure are true for PL/SQL function too.


1 Answers

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.

like image 187
smnbbrv Avatar answered Sep 22 '22 22:09

smnbbrv