CREATE PROCEDURE [dbo].[sp_FindStringInTable]
(
@PageSize INT = NULL,
@CurrentPage INT,
@stringToFind VARCHAR(100),
@table sysname,
@type varchar(100),
@columnTypeName varchar(100)
)
AS
DECLARE @sqlCommand VARCHAR(8000)
DECLARE @where VARCHAR(8000)
DECLARE @columnName sysname
DECLARE @cursor VARCHAR(8000)
DECLARE @Skip INT
DECLARE @Take INT
IF(LEN(@type)<=0)
BEGIN
SET @type=NULL
END
IF(LEN(@columnTypeName)<=0)
BEGIN
SET @columnTypeName=NULL
END
SET @Skip = (@CurrentPage - 1) * @PageSize
SET @Take = @CurrentPage * @PageSize
BEGIN TRY
SET @sqlCommand = 'SELECT *,(select typeName from address_types where address_types.type_id=A.type_id) as typeName
FROM
(SELECT ROW_NUMBER() OVER
(ORDER BY add_id desc) rownumber,* FROM [' + @table + '] WHERE'
SET @where = ''
SET @cursor = 'DECLARE col_cursor CURSOR FOR SELECT COLUMN_NAME
FROM ' + DB_NAME() + '.INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME = ''' + @table + '''
AND DATA_TYPE IN (''char'',''nchar'',''ntext'',''nvarchar'',''text'',''varchar'')'
EXEC (@cursor)
OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
IF @where <> ''
SET @where = @where + ' OR'
SET @where = @where + ' [' + @columnName + '] LIKE ''%' + @stringToFind + '%'''
IF(LEN(@columnTypeName)>0)
BEGIN
SET @where=@where+' AND '+@columnTypeName+'='+COALESCE(@type,'[type_id]')+''
END
FETCH NEXT FROM col_cursor INTO @columnName
END
CLOSE col_cursor
DEALLOCATE col_cursor
SET @sqlCommand = @sqlCommand + @where +') A WHERE
A.RowNumber > ' + Cast(@Skip AS VARCHAR) + ' AND A.RowNumber <= '+cast(@Take as varchar)
EXEC (@sqlCommand)
END TRY
BEGIN CATCH
PRINT 'There was an error. Check to make sure object exists.'
PRINT error_message()
IF CURSOR_STATUS('variable', 'col_cursor') <> -3
BEGIN
CLOSE col_cursor
DEALLOCATE col_cursor
END
END CATCH
(
@PageSize INT = NULL,
@CurrentPage INT,
@stringToFind VARCHAR(100),
@table sysname,
@type varchar(100),
@columnTypeName varchar(100)
)
AS
DECLARE @sqlCommand VARCHAR(8000)
DECLARE @where VARCHAR(8000)
DECLARE @columnName sysname
DECLARE @cursor VARCHAR(8000)
DECLARE @Skip INT
DECLARE @Take INT
IF(LEN(@type)<=0)
BEGIN
SET @type=NULL
END
IF(LEN(@columnTypeName)<=0)
BEGIN
SET @columnTypeName=NULL
END
SET @Skip = (@CurrentPage - 1) * @PageSize
SET @Take = @CurrentPage * @PageSize
BEGIN TRY
SET @sqlCommand = 'SELECT *,(select typeName from address_types where address_types.type_id=A.type_id) as typeName
FROM
(SELECT ROW_NUMBER() OVER
(ORDER BY add_id desc) rownumber,* FROM [' + @table + '] WHERE'
SET @where = ''
SET @cursor = 'DECLARE col_cursor CURSOR FOR SELECT COLUMN_NAME
FROM ' + DB_NAME() + '.INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME = ''' + @table + '''
AND DATA_TYPE IN (''char'',''nchar'',''ntext'',''nvarchar'',''text'',''varchar'')'
EXEC (@cursor)
OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
IF @where <> ''
SET @where = @where + ' OR'
SET @where = @where + ' [' + @columnName + '] LIKE ''%' + @stringToFind + '%'''
IF(LEN(@columnTypeName)>0)
BEGIN
SET @where=@where+' AND '+@columnTypeName+'='+COALESCE(@type,'[type_id]')+''
END
FETCH NEXT FROM col_cursor INTO @columnName
END
CLOSE col_cursor
DEALLOCATE col_cursor
SET @sqlCommand = @sqlCommand + @where +') A WHERE
A.RowNumber > ' + Cast(@Skip AS VARCHAR) + ' AND A.RowNumber <= '+cast(@Take as varchar)
EXEC (@sqlCommand)
END TRY
BEGIN CATCH
PRINT 'There was an error. Check to make sure object exists.'
PRINT error_message()
IF CURSOR_STATUS('variable', 'col_cursor') <> -3
BEGIN
CLOSE col_cursor
DEALLOCATE col_cursor
END
END CATCH

