Assignment 4 – Stored Functions

Assignment 4 – Stored Functions

Objectives

To write a stored function that can be used in Queries and Stored Procedures

Stored functions, along with stored procedures, are one of the best tools to have in your SQL toolkit. They are incredibly useful for encapsulating commonly used SQL statements. They are also useful for shielding the inner details of the database from external development when databases are used in large systems.

Assignment

You will be writing 2 stored functions for this assignment. One function will be a table-valued function (they will return a set of values), the other will be a Scalar function.

Function 1: func_GetMenuItemsForMenu – For this function, you will pass the ID of the menu to the function. The function will find all MenuItems that are on the menu. It will return a table.

Function 2: func_GetMenuItemDescriptionForMenuItemID – This will operate as expected in the title. You will pass a MenuItemID to the function and it will return the Menu Item Description. This will return a scalar (varchar)

With these 2 functions, you will demonstrate that you can create a single SQL Query or Stored Procedure that uses the function call to return the description of all menu items that appear on a given menu. Demonstrate this with a real query.

You will turn in a report that contains; (1) the text of the 2 functions (2) a screen capture of your query, and (3) the results of the query (doc or pdf format – pdf preferred).

NOTE You may substitute tables of your own design and write 2 function that meet the same requirements as these functions. The function must use multiple tables, one must return a table, the other a scalar (varchar or text). Please include design details of your tables if you use this option.  If you do this you are expected to also include a discussion (purpose, design) about your database on the discussion boards.

Information

First create and test your functions – once complete start thinking about the final requirement – given a menu ID – returning a description of each item on the menu. What stored functions allow you to do is simplify very complex queries.  To illustrate this let’s look at a complex query that uses an embedded table.

In the query below the section in red is a SELECT statement that returns a table and the results of that query are treated as a table that is queried in the outer SELECT. The inner query could easily be replaced by a stored function providing 2 advantages; (1) a more simple and easy-to-read primary query, and (2) the inner section can be reused in other queries. This is just an example of a use of a Stored Function.

SELECT Table1.Name,
  Table1.email,
  CONCAT(flx_races.race_name, ' ', flx_race_types.race_type) AS Race,
   YEAR(flx_races.race_date) AS Year
FROM
(
SELECT flx_team_registration_racers.racer_id,
  CONCAT(flx_racers.first_name, ' ', flx_racers.last_name) AS Name,
  flx_racers.email_address AS email,
  COUNT(flx_team_registration_racers.racer_id) AS 'Race Count'
FROM  flx_team_registration_racers,
 flx_racers
WHERE     flx_team_registration_racers.racer_id = flx_racers.racer_id
GROUP BY flx_team_registration_racers.racer_id
HAVING COUNT(flx_team_registration_racers.racer_id) = 1
) AS Table1,
   flx_team_registrations,
   flx_races,
   flx_team_registration_racers,
   flx_racers,
   flx_race_types
WHERE     Table1.racer_id = flx_team_registration_racers.racer_id
AND    flx_team_registration_racers.team_registration_id = flx_team_registrations.team_registration_id
AND     flx_team_registrations.race_type_id = flx_race_types.race_type_id
AND    flx_team_registrations.race_id = flx_races.race_id
GROUP BY flx_team_registration_racers.racer_id
ORDER BY flx_races.race_date ASC

Estimated Completion Time

Allot a few hours for this (it took me about 15 minutes to complete). You should take some time to learn what are some uses of Stored Functions and Stored Procedures.

Supporting Lectures

Week 4 lectures and reference COP4709 Course Lectures By Week

Questions and Answers

I will be answering questions on the discussion board and common questions will be transferred to this area.

External Resources

Differences and uses of stored procedures and stored functions – http://stackoverflow.com/questions/1179758/function-vs-stored-procedure-in-sql-server

A great article on Stored Functions returning Tables – http://www.sqlservertutorial.net/sql-server-user-defined-functions/sql-server-table-valued-functions/

and Scalar functions

https://www.sqlservertutorial.net/sql-server-user-defined-functions/sql-server-scalar-functions/

I

WiseOwl Video on Table-Valued Functions – https://www.youtube.com/watch?v=nCAEgNxC7nU

Grading Criteria

5 Points for creating and executing a stored function returning a scalar.
5 points for creating and executing a stored function returning a table.