Technical Article

Search For SPs which contain a specific String.

,

This Stored Procedure is for Searching all the user defined Stored Procedures in a database for the existence of a specified string . This is especially useful when you have changed some Column name and want to Find the Column Name in all the Stored Procedures where it is used, so it will return you all the SPs which contain that Column Name in them.

Well I realized that I used an additional Cursor for looping through for the SP Name which can be accomplished in the cursor which is used for retrieving the SP Text itself so I modified the Stored procedure for little optimization.

/* 	TITLE 	: PROCEDURE WHICH RETURNS LIST OF ALL THE USER DEFINED STORED PROCEDURES WHICH CONTAIN A SPECIFIC STRING.
	AUTHOR 	: PRASAD BHOGADI
	ORGANIZATION : INFORAISE TECHNOLOGIES PVT LTD, INDIA.
*/


ALTER PROCEDURE SearchForStringInSPs @searchfor VARCHAR(100)
AS
DECLARE @spcode varchar(8000),
	@spname varchar(100),
	@occurance int,
	@rowcount int
set nocount on
CREATE TABLE #SPNAMES 
(SPNAME varchar(100))

DECLARE GETSPNAME CURSOR FOR 
	SELECT  NAME 
	FROM 
		sysobjects 
	WHERE 
		type='P' 
	AND 
		category=0

OPEN GETSPNAME 

FETCH NEXT FROM GETSPNAME INTO @spname

WHILE @@FETCH_STATUS = 0
	BEGIN

		DECLARE GETSPCODE CURSOR FOR

			SELECT 	syscomments.text

			FROM 
				sysobjects,syscomments

			WHERE 
				sysobjects.id = syscomments.id

			AND 
				sysobjects.type = 'P'

			AND 
				sysobjects.name = @spname

		OPEN GETSPCODE 
		FETCH  NEXT FROM GETSPCODE into @spcode
		WHILE @@FETCH_STATUS =0
			BEGIN
				SET @occurance = (SELECT CHARINDEX(@searchfor,@spcode))
				IF @occurance > 0
					BEGIN
						INSERT INTO #SPNAMES(SPNAME ) VALUES(@spname)	
					END
		FETCH  NEXT FROM GETSPCODE into @spcode
		SET @rowcount=@rowcount-1
		END
		CLOSE GETSPCODE
		DEALLOCATE GETSPCODE

FETCH NEXT FROM GETSPNAME INTO @spname
END
CLOSE GETSPNAME
DEALLOCATE GETSPNAME 
SELECT DISTINCT(LTRIM(RTRIM(SPNAME))) FROM #SPNAMES

---------------------------------------------------------------------
--Modified
---------------------------------------------------------------------
/* 	TITLE 	: PROCEDURE WHICH RETURNS LIST OF ALL THE USER DEFINED STORED PROCEDURES WHICH CONTAIN A SPECIFIC STRING.
	AUTHOR 	: PRASAD BHOGADI
	ORGANIZATION : INFORAISE TECHNOLOGIES PVT LTD, INDIA.
*/


create PROCEDURE SearchForStringInSPsUpd @searchfor VARCHAR(100)
AS
DECLARE @spcode varchar(8000),
	@spname varchar(100),
	@occurance int,
	@rowcount int
set nocount on
CREATE TABLE #SPNAMES 
(SPNAME varchar(100))


		DECLARE GETSPCODE CURSOR FOR

			SELECT 	syscomments.text,
				sysobjects.name

			FROM 
				sysobjects,syscomments

			WHERE 
				sysobjects.id = syscomments.id

			AND 
				sysobjects.type = 'P'
			AND 
				sysobjects.category=0

		OPEN GETSPCODE 
		FETCH  NEXT FROM GETSPCODE into @spcode,@spname
		WHILE @@FETCH_STATUS =0
			BEGIN
				SET @occurance = (SELECT CHARINDEX(@searchfor,@spcode))
				IF @occurance > 0
					BEGIN
						INSERT INTO #SPNAMES(SPNAME ) VALUES(@spname)	
					END
		FETCH  NEXT FROM GETSPCODE into @spcode,@spname
		SET @rowcount=@rowcount-1
		END
		CLOSE GETSPCODE
		DEALLOCATE GETSPCODE


SELECT DISTINCT(LTRIM(RTRIM(SPNAME))) FROM #SPNAMES

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating