Oracle Execute anonymous block
You can execute anonymous block. This example shows also how to return value from dynamic SQL:
DECLARE
query_text VARCHAR2(1000) := 'begin :P_OUT := cos(:P_IN); end;';
in_value NUMBER := 0;
out_value NUMBER;
BEGIN
EXECUTE IMMEDIATE query_text USING OUT out_value, IN in_value;
DBMS_OUTPUT.put_line('Result of anonymous block: ' || TO_CHAR(out_value));
END;
/