Procedures are a primarily building block of rwloadsim, particularly when doing actual load simulation. If a procedure includes processing of SQL, rwloadsim will automatically ensure there is a database session available when the procedure is called. If the database is declared using some pooling, the session will similarly be automatically released when no longer needed.
A function is similar to a procedure, but it has a return value and is used in expressions.
Both procedures and functions are declared with a header, a potentially empty list of arguments and the actual code implementing the functionality required. They can have local variables that, just as the arguments, are only available inside.
A sample procedure declaration is the following:
procedure isbig(double x)
if x>1000.0 then
printline x||" is larger than one thousand";
else
printline x;
end if;
end isbig;
Due to the scope rules of local variables, if you e.g. attempt something like
procedure trynestedlocal(integer x)
if x>0 then
integer y := 3*x; # y is local to the procedure
else
integer y := -3*x; # so you cannot re-declare y here
end;
... # do something with y
end;
you will get an error about re-declaration of the local variable y.
A function is similar to a procedure, but it has a return value of a specified type, and it is used in expressions.
An example of a function declaration is the following:
function add(integer a, integer b)
return integer
is
return a+b;
end function;