Your organization
wants you to write a stored procedure to pass the
table name and get back the number of records that
table contains. The SELECT statement must be created
a dynamically, since you don�t know what table you
are getting statistics from. You should write your
function so that your client can display all of the
tables� name, plus the number of records contained
each table.
-- Hands-On 07 (Using
Native Dynamic SQL)
SET ECHO ON
CLEAR SCR
-- Connect to sqlplus as the oracle user.
--
pause
CONNECT oracle/learning
pause
CLEAR SCR
-- Set the pagesize to 55 and the linesize to 100.
--
pause
SET PAGESIZE 55 LINESIZE 100
pause
CLEAR SCR
-- Write a stored procedure, to pass the table name
-- as a parameter, and get back the number of
records
-- that table contains.
--
pause
CREATE OR REPLACE FUNCTION get_total_recs (loc
VARCHAR2)
RETURN NUMBER IS
Query_str VARCHAR2(1000);
Num_of_recs NUMBER;
BEGIN
Query_str := 'SELECT COUNT(*) FROM ' || loc;
EXECUTE IMMEDIATE query_str INTO num_of_recs;
RETURN num_of_recs;
END;
/
-- Notice that the native dynamic SQL was used
-- in the stored procedure.
pause
CLEAR SCR
-- Test your function with a single table.
--
pause
SELECT get_total_recs('emp') FROM dual
/
pause
CLEAR SCR
-- Test your function with multiple tables.
--
pause
SELECT table_name as "Table Name",
get_total_recs(table_name) as "Number of Records"
FROM user_tables
/
pause
CLEAR SCR
-- Drop the get_total_recs function.
--
pause
DROP FUNCTION get_total_recs
/
pause
CLEAR SCR
-- Now, practice this Hands-On over and over
-- until you become a master at it.
-- For more information about the subject, you are
encouraged
-- to read from a wide selection of available books.
-- Good luck!
pause |