10 Creating Functions
10 Creating Functions
10 Creating Functions
Explanation:
If the stored function returns an Oracle server internal data type and does not modify
database tables, it can be invoked from within a SQL statement.
END;
Which set of statements will successfully invoke this function within SQL*Plus?
Explanation:
Functions can be invoked in SQL statements unless they return a non-server data type, such
as BOOLEAN.
Functions can also be executed as part of an expression in PL/SQL. They cannot be invoked
like a procedure.
DECLARE
v_updated_flag BOOLEAN;
BEGIN
v_updated_flag := set_budget(11,500000000);
END;
G_YEARLY_BUDGET is prefixed with a colon only within the EXECUTE statement because
this statement is actually an implicit PL/SQL anonymous block. When referencing host
variables within a PL/SQL construct, you must use the colon to distinguish them from local
PL/SQL variables.
IF SQL%FOUND THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
COMMIT;
END;
Explanation:
Functions must contain two RETURN statements. One RETURN statement must exist in
the header section to specify the data type to be returned. Another RETURN statement
must exist in the executable section to return the value.
This function is missing the RETURN statement in the header section. It must be listed
immediately before the IS keyword.
Explanation:
Functions cannot be invoked within a CHECK constraint, but can be used in SELECT,
INSERT, UPDATE, and DELETE statements. They can also be invoked from within other
server-side or client-side functions.
To execute this function successfully, what additional code must be added to the
executable section?
RETURN;
RETURN
get_budget;
OUT
v_yearly_budget;
RETURN
v_yearly_budget;
Explanation:
Functions must contain two RETURN statements. One RETURN statement must exist in
the header section to specify the data type to be returned. Another RETURN statement
must exist in the executable section to return the value.
This function is missing the RETURN statement required in the executable section.
RETURN v_yearly_budget;
Explanation:
Only functions must return a value and can be invoked as part of a PL/SQL
expression. Functions can also be invoked from a SQL statement if it returns an Oracle
server internal data type and does not modify database tables.
Explanation:
Arguments must be declared in the header section and precede the RETURN
statement. The header section is declared after the function name and before the IS
keyword.
Explanation:
Functions and procedures improve maintainability by storing a block of logic in one
place. Therefore, subsequent changes to the logic occur in one place.
Which two subprogram headers are correct? (Choose two.)
Explanation:
When creating functions, the argument list must be defined prior to the RETURN statement.
When creating procedures, the argument list must be defined prior to the IS keyword.
When creating a function in SQL*Plus, you receive an error message stating that
the function created with compilation errors.
Explanation:
Procedure or function compilation errors can be viewed in SQL*Plus by issuing the SHOW
ERRORS command or by querying the USER_ERRORS data dictionary view.
Explanation:
Functions must contain a RETURN statement in the header to specify the data type of the
value to be returned. Although a function will compile successfully without a RETURN
statement in the executable section, it will generate a run-time error if no value is returned to
the calling environment when executed.
The header information includes the function name, arguments, and the RETURN
statement. It must come before the IS keyword.
EXECUTE
calc_comm;
SELECT *
FROM
calc_comm(emp);
EXECUTE calc_comm(SELECT total FROM
ord);
SELECT *
FROM ord
GROUP BY ordid
HAVING calc_comm(total) >
5000;
Explanation:
Stored user-defined functions can be invoked as part of a PL/SQL expression or SQL
statement. However, they cannot be used in the FROM clause.
You cannot use EXECUTE to invoke a function unless you have a variable to hold the
returning value.
For example:
SQL> VARIABLE g_return_value NUMBER
SQL> EXECUTE :g_return_value := calc_comm(4000);
function
procedure
public packaged
procedure
private packaged
procedure
private packaged
function
Explanation:
Only functions can be invoked from within a SQL statement. They can be either stand-alone
or packaged as a public function.
For which purpose are formal parameters used when creating functions?
restricting pragma
references
passing values to the
function
bypassing directives to the
compiler
prompting the end user for
information
Explanation:
Functions, like procedures, use formal parameters to transfer values to and from the calling
environment. Unlike procedures, OUT arguments are not typically used with
functions. Information is transferred out using the RETURN statement.
RETURN v_yearly_budget;
END;
Which set of statements will successfully invoke this function within SQL*Plus?
VARIABLE g_yearly_budget
NUMBER
:g_yearly_budget :=
GET_BUDGET(11);
VARIABLE g_yearly_budget NUMBER
EXECUTE g_yearly_budget :=
GET_BUDGET(11);
VARIABLE g_yearly_budget NUMBER
EXECUTE :g_yearly_budget :=
GET_BUDGET(11);
VARIABLE :g_yearly_budget NUMBER
EXECUTE :g_yearly_budget :=
GET_BUDGET(11);
Explanation:
Functions must be invoked as part of an expression that utilizes the return value. In
SQL*Plus, use the VARIABLE command to create a host variable and use it when invoking
the function.
Notice, the G_YEARLY_BUDGET variable is only prefixed with a colon within the EXECUTE
statement because this statement is actually an implicit PL/SQL anonymous block. When
referencing host variables within a PL/SQL construct, you must use the colon to distinguish
them from local PL/SQL variables.
Explanation:
Functions cannot be invoked within the DEFAULT clause of the CREATE TABLE statement,
but can be used in SELECT, INSERT, UPDATE, and DELETE statements. They can also
be invoked from within other server-side or client-side functions.
What must be true about the GET_BUDGET function for this statement to be
successful?
It must be
remote.
It must not modify the
database.
It must also exist as a stand-alone
function.
It must only exist in the body of
THEATER_PCK.
Explanation:
Functions, standalone or part of a package, cannot modify the database if they are invoked
from a SQL statement.
COMMIT;
END;
SELECT id,
set_budget(11,500000000)
FROM studio;
DECLARE
v_updated_flag
BOOLEAN;
BEGIN
set_budget(11,500000000)
;
END;
VARIABLE g_updated_flag BOOLEAN
BEGIN
g_updated_flag :=
set_budget(11,500000000);
END;
DECLARE
v_updated_flag BOOLEAN;
BEGIN
v_updated_flag :=
set_budget(11,500000000);
END;
Explanation:
Functions can be invoked in SQL statements unless they return a non-server data type, such
as BOOLEAN.
DECLARE
v_updated_flag BOOLEAN;
BEGIN
v_updated_flag := set_budget(11,500000000);
END;
Procedures and functions can be created and stored in the database or in an
Oracle Developer application. How is performance improved when storing
procedures and functions in the database?
Explanation:
The source and object code of database stored procedures and functions are stored like
other objects, in physical files assigned to the appropriate tablespace. When executed from
a client application, they require only one call. Since the object code is stored on the
database side, there is no need to send it across the network.
Executing procedures and functions stored in an Oracle Developer application will process
each PL/SQL statement and pass each SQL statement across the network to the database
to be processed, dramatically increasing network roundtrips.