Skip to content

shannonlowder.com

Menu
  • About
  • Biml Interrogator Demo
  • Latest Posts
Menu

Find Stored Procedures Referencing…

Posted on July 17, 2009November 16, 2011 by slowder

Time and time again, I find myself trying to find all the stored procedures that reference a specific database object.  It usually comes around when I’m working on changes to a table’s structure, or I’m replacing a table with a view.  I’ll usually reach for the following query (or something like it.

 1: SELECT ROUTINE_NAME

 

 2: FROM INFORMATION_SCHEMA.ROUTINES

 

 3: WHERE

 

 4:     ROUTINE_DEFINITION LIKE '%searchTerm%' 

 

 5:     AND ROUTINE_TYPE='PROCEDURE'

 

Today I decided it was time I created a function to accomplish this same task.  That way I could always use the same tool to locate stored procedures that reference X.

So I created this.

 1: CREATE FUNCTION f_findProceduresReferencing (@searchTerm VARCHAR(500) )

 

 2: RETURNS @results TABLE (

 

 3:      routine_Name SYSNAME

 

 4: )

 

 5: AS

 

 6: BEGIN

 

 7:      INSERT INTO @results

 

 8:      SELECT ROUTINE_NAME

 

 9:      FROM INFORMATION_SCHEMA.ROUTINES

 

 10:      WHERE

 

 11:           ROUTINE_DEFINITION LIKE '%' + @searchTerm + '%'

 

 12:           AND ROUTINE_TYPE='PROCEDURE'

 

 13:

 

 14: RETURN

 

 15: END

 

I want you to see that for the input, I’m taking a VARCHAR.  That way you can give partial names.  but for the output, I’m returning SYSNAME, that way the results can be used as inputs to other queries.

Now that we have a function, you can use it in a simple query:

 1: SELECT * FROM dbo.f_findProceduresReferencing('tableName')

 

But you could also apply the function to the results of another query.  Try this on for size.

 1: SELECT TOP 10 so.name, f.ROUTINE_NAME

 

 2: FROM sys.objects so

 

 3: CROSS APPLY  dbo.f_findProceduresReferencing(so.name) f

 

 4: WHERE

 

 5:     type = 'u'

 

 6: ORDER BY

 

 7:     so.Name

 

This is the reason I created my function.  I can then select the tables I’m replacing, and this function will show me all the stored procedures I have to update before removing the original tables.  That’s the payoff!

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • A New File Interrogator
  • Using Generative AI in Data Engineering
  • Getting started with Microsoft Fabric
  • Docker-based Spark
  • Network Infrastructure Updates

Recent Comments

  1. slowder on Data Engineering for Databricks
  2. Alex Ott on Data Engineering for Databricks

Archives

  • July 2023
  • June 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • October 2018
  • August 2018
  • May 2018
  • February 2018
  • January 2018
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • June 2017
  • March 2017
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • August 2013
  • July 2013
  • June 2013
  • February 2013
  • January 2013
  • August 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • November 2006
  • October 2006
  • September 2006
  • August 2006
  • July 2006
  • June 2006
  • May 2006
  • April 2006
  • March 2006
  • February 2006
  • January 2006
  • December 2005
  • November 2005
  • October 2005
  • September 2005
  • August 2005
  • July 2005
  • June 2005
  • May 2005
  • April 2005
  • March 2005
  • February 2005
  • January 2005
  • November 2004
  • September 2004
  • August 2004
  • July 2004
  • April 2004
  • March 2004
  • June 2002

Categories

  • Career Development
  • Data Engineering
  • Data Science
  • Infrastructure
  • Microsoft SQL
  • Modern Data Estate
  • Personal
  • Random Technology
  • uncategorized
© 2025 shannonlowder.com | Powered by Minimalist Blog WordPress Theme