Home > Sample T-SQL stored procedure: P_DisplayProductDetails
Feature:
EMAIL THIS LICENSING & REPRINTS

Sample T-SQL stored procedure: P_DisplayProductDetails

06 Jul 2006 | Joe Toscano, Contributor

Expert advice on database development
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google

Our sample stored procedure displays product details from the AdventureWorks database using a function to rank the unit price for each product subcategory. The procedure accepts the category name as an optional input parameter. Several output parameters feed useful information back to the calling batch. Finally, the stored procedure uses structured exception handling, as discussed in a previous tip.

Use AdventureWorks
GO

IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND 
       name = 'P_DisplayProductDetails')
   DROP  Procedure  P_DisplayProductDetails
GO

CREATE Procedure P_DisplayProductDetails
(@Categoryname varchar(50) = NULL,
 @MatchingRows int = NULL OUTPUT,
 @ErrorString varchar(128) = NULL OUTPUT,
 @ErrorNumber int = NULL OUTPUT)
as

BEGIN TRY

            -- Append a % so our callers don't have to know 
exact subcategory names
  if @CategoryName is null
   select @CategoryName = '%'
  else
   select @CategoryName = @CategoryName + '%'

--  Use a rank function to rank data by List Price 
over subcategory name
--  The DENSE_RANK assigns consecutive rank values

  SELECT  Production.Product.ProductID, 
     Production.Product.Name AS ProductName, 
     Production.ProductCategory.Name AS CategoryName, 
     Production.ProductSubcategory.Name AS SubcategoryName,
     Production.Product.ListPrice,
DENSE_RANK() over (Partition by 
Production.ProductSubcategory.Name ORDER BY 
   Production.Product.ListPrice DESC) as PriceRank
  FROM  Production.Product 
  INNER JOIN Production.ProductSubcategory 
ON Production.Product.ProductSubcategoryID = 
Production.ProductSubcategory.ProductSubcategoryID 
  INNER JOIN Production.ProductCategory 
ON Production.ProductSubcategory.ProductCategoryID = 
Production.ProductCategory.ProductCategoryID
  WHERE  Production.ProductCategory.Name like @CategoryName
  ORDER BY Production.ProductCategory.Name  

  select @MatchingRows = @@ROWCOUNT
 
 return 0

END TRY



BEGIN CATCH

-- LOG THE ERROR … WE MAY WANT TO SKIP THIS STEP WHILE DEBUGGING ! 
 insert dbo.Application_Error_Log (UserName, errorNumber, 
                                        errorSeverity, errorState, errorMessage)
 values (suser_sname(), ERROR_NUMBER(),ERROR_SEVERITY(), 
              ERROR_STATE(), ERROR_MESSAGE())  

 
SELECT @ErrorNumber = ERROR_NUMBER(),
   @ErrorString = ERROR_MESSAGE()
   
 RAISERROR (@ErrorString, 16,1)


END CATCH



How to debug T-SQL stored procedures

 Home: Introduction
 Part 1: Sample stored procedure
 Part 2: Where to start debugging the stored procedure
 Part 3: How to step into or run the stored procedure
 Part 4: Visual Studio debug windows

ABOUT THE AUTHOR:   
Joe Toscano
About the author: Joe Toscano is a SQL Server instructor, speaker and database consultant for Micro Endeavors Inc. He has worked extensively with SQL Server since version 6.5, as well as Sybase and Informix prior to that. Toscano's areas of expertise include Data Transformation Services (DTS), Integration Services (SSIS), Transact-SQL (T-SQL) programming, data warehousing, performance tuning, replication, high availability (mirroring), security, disaster recovery, upgrading, migration projects and lights-out DBA tasks.
Copyright 2006 TechTarget


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


RELATED CONTENT
SQL Server stored procedures
How to use SQL Server 2008 hierarchyid data type
SQL and SQL Server Tutorial and Reference Guide
SQL Server stored procedures tutorial: Write, tune and get examples
Check SQL Server database and log file size with this stored procedure
SQL Server source code analysis and management adds database security
Configure SQL Server Service Broker for sending stored procedure data
Find size of SQL Server tables and other objects with stored procedure
Track changes to SQL Server 2000 and 2005 with one simple utility
Troubleshoot SQL Server 2005 temporary table performance problems
Use SQL Profiler to find long running stored procedures and commands

SQL/Transact SQL (T-SQL)
Physical data storage in SQL Server 2005 and 2008
SQL Server 2008 data types: Datetime, string, user-defined and more
SQL Server and data manipulation in T-SQL
Enforcing data integrity in a SQL Server database
Supertype and subtype tables in SQL Server
Using SQL Server datetime functions GETDATE, DATENAME and DATEPART
Ordering the results of a SQL query
How to use SQL Server 2008 hierarchyid data type
SQL Server data conversions from date/time values to character types
SQL and SQL Server Tutorial and Reference Guide
SQL/Transact SQL (T-SQL) Research

Visual Basic in SQL Server
Retrieve images from SQL Server and store in VB.Net
Developing CLR database objects: 10 tips, 10 minutes
CLR architecture
Creating CLR database objects
CLR assemblies in SQL Server 2005
User-Defined Functions
User-Defined Types
.NET database object security
Debugging CLR database objects
CLR triggers
Visual Basic in SQL Server Research

RELATED GLOSSARY TERMS
Terms from Whatis.com − the technology online dictionary
library  (SearchSQLServer.com)
trigger  (SearchSQLServer.com)

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary


HomeNewsTopicsITKnowledge ExchangeTipsAsk the ExpertsMultimediaWhite PapersIT Downloads
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides enterprise IT professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective IT purchase decisions and managing their organizations' IT projects - with its network of technology-specific Web sites, events and magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Reprints  |  Site Map




All Rights Reserved, Copyright 2005 - 2008, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts