Sunday, 7 May 2017

Return Output Parameter From Stored Procedure

CREATE PROCEDURE [dbo].[USP_FindName]
      @ID INT,
      @NAME VARCHAR(30) OUTPUT
AS
BEGIN
      SET NOCOUNT ON;
     
      SELECT @NAME = NAME FROM dbo.TABLENAME
      WHERE ID = @ID
END

Sunday, 23 April 2017

Detach Multiple Database In Sql Server

USE MASTER 
DECLARE DATABASES CURSOR
FOR
    SELECT  NAME
    FROM    SYSDATABASES
    WHERE   NAME NOT IN ( 'MASTER', 'TEMPDB', 'MSDB', 'MODEL' ) 
DECLARE @DB SYSNAME 

DECLARE @SQL VARCHAR(5000) 
OPEN DATABASES 

FETCH NEXT FROM DATABASES INTO @DB 
WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @SQL = 'SP_DETACH_DB ' + @DB 
        EXEC (@SQL) 
        FETCH NEXT FROM DATABASES INTO @DB 

    END 
CLOSE DATABASES 
DEALLOCATE DATABASES  

Friday, 21 April 2017

Find Row Count Of Tables Based On Cursor

DECLARE @TName VARCHAR(MAX); 
DECLARE @Cnt VARCHAR(MAX); 
DECLARE TABLENAME CURSOR
FOR
    SELECT  TNAME
    FROM    TABLENAME
    WHERE   TYPE = 'L'; 

OPEN TABLENAME; 

FETCH NEXT FROM TABLENAME INTO @TName; 

WHILE @@FETCH_STATUS = 0
    BEGIN 
        SET NOCOUNT ON; 

        SELECT  @Cnt = COUNT(*)
        FROM    INFORMATION_SCHEMA.COLUMNS
        WHERE   TABLE_NAME = @TName; 

        PRINT 'Table : ' + @TName + ' (' + @Cnt + ')'; 

        FETCH NEXT FROM TABLENAME INTO @TName; 
    END;

CLOSE TABLENAME; 
DEALLOCATE TABLENAME; 

Working With The TRY…CATCH Block in Sql Server

DECLARE @COLUMNID INT ,
              @COLUMNNAME INT;

BEGIN
    BEGIN TRY
        BEGIN TRANSACTION;
        UPDATE  TABLENAME
        SET     COLUMNNAME = @COLUMNNAME
        WHERE   COLUMNID = @COLUMNID;
        COMMIT TRANSACTION;
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
            ROLLBACK TRANSACTION;
        DECLARE @ErrorNumber INT = ERROR_NUMBER();
        DECLARE @ErrorLine INT = ERROR_LINE();
        DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
        DECLARE @ErrorSeverity INT = ERROR_SEVERITY();
        DECLARE @ErrorState INT = ERROR_STATE();

        PRINT 'Actual Error Number: ' + CAST(@ErrorNumber AS VARCHAR(10));
        PRINT 'Actual Line Number: ' + CAST(@ErrorLine AS VARCHAR(10));

        RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
    END CATCH;
END;
GO

Return Custom Error Message

DECLARE @CustomErrorString VARCHAR(100),
        @Value             INT = 5;

IF @Value >= 5
  BEGIN
      SET @CustomErrorString = 'Value Is Greater Than or Equal To '
                               + CONVERT(VARCHAR(10), @Value);

      RAISERROR (@CustomErrorString,10,1,50,50);

      RETURN; --Exit Now
  END; 

Drop All The Stored Procedure From SQL Server Database Without Using Enterprise Manager

SELECT 'DROP PROCEDURE [' + SCHEMA_NAME(schema_id) + '].[' + name + ']'
FROM SYS.PROCEDURES
ORDER BY NAME