0% found this document useful (0 votes)
18 views

MS SQL Course (Intermediate)

Uploaded by

b.nagnath194
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

MS SQL Course (Intermediate)

Uploaded by

b.nagnath194
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

VARIABLES:

DECLARE @INPUT1 INT = 10; -- DEFAULT VALUE


SELECT @INPUT1 as INPUT1

DECLARE @INPUT1 INT, -- Define the variable INPUT1


@INPUT2 INT; -- You can define the next variable using comma

SET @INPUT1 = 10 -- Assign Value to the Variable


SET @INPUT2 = 20 -- Assign Value to the Variable

SELECT (@INPUT1 + @INPUT2) as OutputValue


-- For numerical values, the mathematical output is displayed

SELECT (@INPUT1 * @INPUT2) as OutputValue


-- For numerical values, the mathematical output is displayed

DECLARE @INPUT3 VARCHAR(10),


@INPUT4 VARCHAR(10);

SET @INPUT3 = 'ABC'


SET @INPUT4 = 'XYZ'

SELECT (@INPUT3 + @INPUT4) as OutputValue


-- For string, the values are concatenated

SELECT (@INPUT3 + ' ' + @INPUT4) as OutputValue


-- To add extra characters, use '+'

SELECT 'INPUT1: ' + CAST(@INPUT1 as VARCHAR) as OutputValue


-- If you are using a combination of String and Integer,
-- you will have to cast/convert the integer to varchar.

DECLARE @INPUT5 VARCHAR(10),


@INPUT6 VARCHAR(10);

SET @INPUT5 = '10'


SET @INPUT6 = '20'

SELECT (@INPUT5 + @INPUT6) as OutputValue


-- For string, the values are concatenated
-- notice how the behavior changes for integers and strings.

SELECT GETDATE() AS DATETIME INTO #TEMP1

SELECT * FROM #TEMP1

DECLARE @VAR1 VARCHAR(30)

SELECT @VAR1 = DATETIME FROM #TEMP1 -- ASSIGN COLUMN VALUES TO A VARIABLE

SELECT @VAR1 AS DATETIME


IF ELSE CONDITION:

DECLARE @INPUT1 INT, -- Define the variable INPUT1


@INPUT2 INT; -- You can define the next variable using comma

SET @INPUT1 = 10 -- Assign Value to the Variable


SET @INPUT2 = 20 -- Assign Value to the Variable

---- If condition with single line in action


IF @INPUT1 > 5
PRINT 'Input is greater than 5.'

---- If condition with multiple lines in action


IF @INPUT1 > 5
PRINT 'Input is greater than 5.'
PRINT 'Input value is: ' + CAST(@INPUT1 as VARCHAR)

---- If else if condition


IF @INPUT1 < 5
BEGIN
PRINT 'Input is greater than 5.'
PRINT 'Input value is: ' + CAST(@INPUT1 as VARCHAR)
END
ELSE
IF @INPUT2 > 15
PRINT 'Input is greater than 15'

---- nested if else condition


IF @INPUT1 < 5
BEGIN -- BEGIN is needed because of multiple lines in IF
condition
PRINT 'Input is greater than 5.'
PRINT 'Input value is: ' + CAST(@INPUT1 as VARCHAR)
END
ELSE
IF @INPUT2 < 15
PRINT 'Input is greater than 15' -- BEGIN not needed
ELSE
IF @INPUT2 = 20
PRINT 'Input is 20'
WHILE LOOP:

DECLARE @VAR1 INT


SET @VAR1 = 1

-- Simple WHILE loop


WHILE (@VAR1 < 10)
BEGIN
PRINT @VAR1
SET @VAR1 = @VAR1 + 1
END

-- WHILE loop with BREAK and CONTINUE in IF..ELSE condition


SET @VAR1 = 1

WHILE (@VAR1 < 10)


BEGIN
PRINT @VAR1
SET @VAR1 = @VAR1 + 1

IF (@VAR1 % 5) = 0
BEGIN
PRINT 'Divisible by 5'
BREAK
END
ELSE
CONTINUE
END
CTE: COMMON TABLE EXPRESSION

WITH CTE_DATETIME (DateNow,TimeNow)


AS (
SELECT CONVERT(VARCHAR,GETDATE(),103) AS CurrDate ,
CONVERT(VARCHAR,GETDATE(),24) AS CurrTime
)

----SELECT CONVERT(VARCHAR,GETDATE(),20) AS CurrDateTime

SELECT DateNow , TimeNow


FROM CTE_DATETIME

--IF ( SELECT DateNow from CTE_DATETIME ) < GETDATE()


-- PRINT 'HERE'

--SELECT DateNow
--FROM CTE_DATETIME
--WHERE DateNow <= CONVERT(VARCHAR,GETDATE(),103)

--Syntax:

WITH <CTENAME> (<Col1>,<Col2>,...,<coln>)


AS
(
select <xCol1>,<xCol2>,...,<xColn>
from <table>
)

select <Col1>,<Col2>,...,<coln>
from <CTENAME>
TRY – CATCH

BEGIN TRY
DECLARE @out DECIMAL(7,2)

SET @out = 1/1


--SET @out = 1/0
select @out as OutValue

END TRY

BEGIN CATCH
select ERROR_MESSAGE() as ErrorMessage
END CATCH
PARAMETERIZED SCALAR FUNCTION

CREATE FUNCTION fn_calcAdd (@VAR1 DECIMAL(7,2))


RETURNS DECIMAL(7,2)
BEGIN
RETURN @VAR1 + @VAR1
END

DECLARE @OUTPUT DECIMAL(8,2)


SET @OUTPUT= MobInv.dbo.fn_calcAdd (15.6)

SELECT @OUTPUT as outputValue

CREATE FUNCTION fn_calcAddTwoVars (@VAR1 DECIMAL(7,2),@VAR2 INT)


RETURNS DECIMAL(7,2)
BEGIN
RETURN @VAR1 + @VAR2
END

DECLARE @OUTPUT DECIMAL(8,2)


SET @OUTPUT= MobInv.dbo.fn_calcAddTwoVars (15.6,25)

SELECT @OUTPUT as outputValue

CREATE FUNCTION fnCheckDivisibility (@numerator decimal(7,2) , @denominator


decimal(7,2))
RETURNS VARCHAR(200)
BEGIN
DECLARE @out VARCHAR(200)
IF ((@numerator%@denominator)=0)
BEGIN
SET @out = cast(@numerator as varchar(10)) + ' is divisible by ' +
cast(@denominator as varchar(10))
END

ELSE
BEGIN
SET @out = cast(@numerator as varchar(10)) + ' is not divisible by '
+ cast(@denominator as varchar(10))
END

RETURN @out
END

DECLARE @n1 decimal(7,2)=12.0,


@n2 decimal(7,2)=13.0,
@outValue VARCHAR(200)

SET @outValue = StoreInvDetails.dbo.fnCheckDivisibility(@n1,@n2)

SELECT @outValue as OutValue


TRIGGER – INSERT

CREATE TRIGGER TrMobStoreIns


ON MobileStoreInventory
FOR INSERT
AS
BEGIN
DECLARE @log VARCHAR(100)

SET @log = 'Data has been pushed'

INSERT INTO LogTable


SELECT @log

END

CREATE TRIGGER TrMobStoreIns


ON MobileStoreInventory
FOR INSERT
AS
BEGIN
DECLARE @log VARCHAR(100),
@ModelNo VARCHAR(20);

SELECT @ModelNo = ModelNo from inserted

SET @log = 'Data has been pushed for '+ @ModelNo

INSERT INTO LogTable


SELECT @log

END

select * from LogTable


----delete from LogTable
----drop table LogTable
TRIGGER – DELETE

CREATE TRIGGER TrMobStoreDel


ON MobileStoreInventory
FOR DELETE
AS
BEGIN
DECLARE @ModelNo VARCHAR(20);

SELECT @ModelNo = ModelNo from Deleted

INSERT INTO LogTable


SELECT 'The Model No ' + @ModelNo + ' has been deleted.'
END
CURSOR

DECLARE <CursorName> CURSOR FOR


SELECT <column1> , <colmn2>
FROM <Table1>

DECLARE <varCol1> VARCHAR(20),


<varCol2> VARCHAR(20);

OPEN <CursorName>
FETCH NEXT FROM <CursorName> INTO <varCol1>, <varCol2>

WHILE @@FETCH_STATUS = 0
BEGIN
print <varCol1> + ' ' + <varCol2>

FETCH NEXT FROM <CursorName> INTO <varCol1> , <varCol2>


END

CLOSE <CursorName>
DEALLOCATE <CursorName>

DECLARE CurrMobComp CURSOR FOR


SELECT ModelNo , Company
FROM MobileStoreInventory

DECLARE @ModelNo VARCHAR(20),


@Company VARCHAR(20);

OPEN CurrMobComp
FETCH NEXT FROM CurrMobComp INTO @ModelNo , @Company

WHILE @@FETCH_STATUS = 0
BEGIN
print @ModelNo + ' ' + @Company

FETCH NEXT FROM CurrMobComp INTO @ModelNo , @Company


END

CLOSE CurrMobComp
DEALLOCATE CurrMobComp
TRIGGER – DELETE with Cursor

----TRIGGER – DELETE with Cursor


CREATE TRIGGER TrMobStoreDelCur
ON MobileStoreInventory
FOR DELETE
AS
BEGIN
DECLARE @ModelNo VARCHAR(20);

DECLARE MobCursor CURSOR FOR


SELECT ModelNo
FROM Deleted

OPEN MobCursor
FETCH NEXT FROM MobCursor INTO @ModelNo

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'HERE!'
print @ModelNo

DECLARE @log VARCHAR(500)


SET @log = 'Record related to model no ' + @ModelNo + ' has been
deleted.'
INSERT INTO LogFile (TimeStamp,ErrorMsg)
VALUES (GETDATE(), @log)

FETCH NEXT FROM MobCursor INTO @ModelNo


END

CLOSE MobCursor
DEALLOCATE MobCursor
END
TRIGGER – UPDATE with Cursor

----TRIGGER – UPDATE with Cursor


CREATE TRIGGER TrMobStoreUpd
ON MobileStoreInventory
FOR UPDATE
AS
BEGIN
DECLARE @ModelNo VARCHAR(20);

DECLARE MobCursor CURSOR FOR


SELECT ModelNo
FROM Inserted

OPEN MobCursor
FETCH NEXT FROM MobCursor INTO @ModelNo

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'HERE!'
print @ModelNo

DECLARE @log VARCHAR(500)


SET @log = 'Record related to model no ' + @ModelNo + ' has been
updated.'
INSERT INTO LogFile (TimeStamp,ErrorMsg)
VALUES (GETDATE(), @log)

FETCH NEXT FROM MobCursor INTO @ModelNo


END

CLOSE MobCursor
DEALLOCATE MobCursor
END
STORED PROCEDURE

ALTER PROCEDURE testProc_sp


AS
BEGIN
SET NOCOUNT ON;

DECLARE CurPickData CURSOR FOR


SELECT EMPID , ENAME
FROM EMP

DECLARE @EMPID INT,


@ENAME VARCHAR(50);

OPEN CurPickData
FETCH NEXT FROM CurPickData INTO @EMPID, @ENAME

WHILE @@FETCH_STATUS = 0
BEGIN
print 'The EmpID is '+ cast(@EMPID as VARCHAR) + ' and the name is
' + @ENAME

FETCH NEXT FROM CurPickData INTO @EMPID , @ENAME


END

CLOSE CurPickData
DEALLOCATE CurPickData

END
GO

EXEC testProc_sp
ALTER PROCEDURE spUpdSal
@EMPID INT , @INC DECIMAL(7,2)
AS
BEGIN

DECLARE @Sal DECIMAL(7,2);

SELECT @Sal = Salary from EMP WHERE EMPID = @EMPID

UPDATE EMP
SET Salary = @Sal + @INC
WHERE EMPID = @EMPID
END

CREATE PROCEDURE spTestCurr


AS
BEGIN

DECLARE CurPickData CURSOR FOR


SELECT EMPID , ENAME
FROM EMP

DECLARE @EMPID INT,


@ENAME VARCHAR(50);

OPEN CurPickData
FETCH NEXT FROM CurPickData INTO @EMPID, @ENAME

WHILE @@FETCH_STATUS = 0
BEGIN
print 'The EmpID is '+ cast(@EMPID as VARCHAR) + ' and the name is '
+ @ENAME

EXEC spUpdSal @EMPID = @EMPID , @INC = 500

SELECT EMPID , SALARY FROM EMP WHERE EMPID = @EMPID

FETCH NEXT FROM CurPickData INTO @EMPID , @ENAME


END

CLOSE CurPickData
DEALLOCATE CurPickData

END

EXEC spTestCurr

You might also like