/* ------------------------------------------------------------------------- Yu Cheng ICS 321 Assignment 2 October 23, 2008 PART 1.3 Create a user defined scalar function for personnel names. This function will take the Person Identifier as a parameters and return a formatted string containing the last name, first name and initial in the following format: LastName, Firstname [initial]. Any reference to Personnel names in the following sections will use this function. Name this function PersonName. ------------------------------------------------------------------------- */ USE DB9975 GO -- Create a user defined scalar function for personnel names. This function -- will take the Person Identifier as a parameters and return a formatted -- string containing the last name, first name and initial in the following -- format: LastName, Firstname [initial]. CREATE FUNCTION PersonName(@Id INT) RETURNS NVARCHAR(50) AS BEGIN DECLARE @FirstName NVARCHAR(20) DECLARE @LastName NVARCHAR(20) DECLARE @MiddleName NCHAR(1) DECLARE @Result NVARCHAR(50) SELECT @LastName = LastName FROM PERSON WHERE Id = @Id SELECT @FirstName = FirstName FROM PERSON WHERE Id = @Id SELECT @MiddleName = MiddleName FROM PERSON WHERE Id = @Id SET @Result = @LastName + ', ' + @FirstName IF LEN(@MiddleName) > 0 SET @Result = @Result + ' ' + @MiddleName RETURN @Result END GO -- e.g. In: PRINT dbo.PersonName(1) -- Out: Bock, Douglass B -- -- In: PRINT dbo.PersonName(2) -- Out: Summer, Elizabeth -- NOTE: On more than one occasion, the homework shows "FirstName, LastName -- MiddleName". Furthermore, the PersonnelAssignments.xls stores -- information this way in the Name column. For this reason, I define -- another function here that matches those forms. CREATE FUNCTION PersonNameReversed(@Id int) RETURNS NVARCHAR(50) AS BEGIN DECLARE @FirstName NVARCHAR(20) DECLARE @LastName NVARCHAR(20) DECLARE @MiddleName NCHAR(1) DECLARE @Result NVARCHAR(50) SELECT @LastName = LastName FROM PERSON WHERE Id = @Id SELECT @FirstName = FirstName FROM PERSON WHERE Id = @Id SELECT @MiddleName = MiddleName FROM PERSON WHERE Id = @Id SET @Result = @FirstName + ', ' + @LastName IF LEN(@MiddleName) > 0 SET @Result = @Result + ' ' + @MiddleName RETURN @Result END GO -- e.g. In: PRINT dbo.PersonNameReversed(1) -- Out: Douglass, Brock B -- -- In: PRINT dbo.PersonNameReversed(2) -- Out: Elizabeth, Summer