February 2, 2012

Search data in database


CREATE PROC SearchAllTables 
(
@SearchStr nvarchar(100)
)
AS
BEGIN



CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))


SET NOCOUNT ON


DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET  @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')


WHILE @TableName IS NOT NULL
BEGIN
        SET @ColumnName = ''
        SET @TableName = 
        (
                SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
                FROM    INFORMATION_SCHEMA.TABLES
                WHERE           TABLE_TYPE = 'BASE TABLE'
                        AND     QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
                        AND     OBJECTPROPERTY(
                                        OBJECT_ID(
                                                QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                                                 ), 'IsMSShipped'
                                               ) = 0
        )


        WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
        BEGIN
                SET @ColumnName =
                (
                        SELECT MIN(QUOTENAME(COLUMN_NAME))
                        FROM    INFORMATION_SCHEMA.COLUMNS
                        WHERE           TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                                AND     TABLE_NAME      = PARSENAME(@TableName, 1)                                      
                                AND     QUOTENAME(COLUMN_NAME) > @ColumnName
                )


                IF @ColumnName IS NOT NULL
                BEGIN
                        INSERT INTO #Results
                        EXEC
                        (
                                'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                                FROM ' + @TableName + ' (NOLOCK) ' +
                                ' WHERE CONVERT(varchar, ' + @ColumnName + ') LIKE ' + @SearchStr2
                        )
                END
        END     
END


SELECT ColumnName, ColumnValue FROM #Results
END

February 1, 2012

Scalar function in SQL



Syntax of Scalar valued function

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName>
(
-- Add the parameters for the function here
<@Param1, sysname, @p1> <Data_Type_For_Param1, , int>
)
RETURNS <Function_Data_Type, ,int>
AS
BEGIN
-- Declare the return variable here
DECLARE <@ResultVar, sysname, @Result> <Function_Data_Type, ,int>

-- Add the T-SQL statements to compute the return value here
SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1>

-- Return the result of the function
RETURN <@ResultVar, sysname, @Result>

END
GO


Example :


GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Sandeep Mhatre
-- Create date: 1 feb 2012
-- Description: Function to check wheater the no is whole no or double
-- =============================================
CREATE FUNCTION udfCheckNo
(
@Number numeric (18,2)
)
RETURNS varchar(50)
AS
BEGIN

Declare @TextNo Varchar(50)


--Declare @TextNo Varchar(50)


Declare @Numeric  varchar (20)
Declare @Double  varchar (20)
Select @Numeric = Convert(varchar , round(15.25 , 2)   )
Select @Double = cast ( round(15.25 , 0)  as decimal(10,2)  )

if(@Numeric = @Double)
Begin

set @TextNo = cast(   @Numeric as decimal(20,0))
--Print  @Numeric
--print @Double
End
else
Begin
---print @Numeric
set @TextNo = cast(   @Numeric as decimal(20,2))
End


--print 'textno ' + @TextNo


RETURN  @TextNo

END
GO


Using the Function

select col1, col2 , dbo.udfCheckNo(col3) from
table1
where condition1