-----------------------User
Degine Function---------------
----------------------------------------------------------
-- Type 1 >
Scaler Functions : Returns single value.
--Ex: Factorial
of Given No.
CREATE FUNCTION UDF_Factorial(
@num int)
RETURNS int
AS
BEGIN
DECLARE @fact int
SET @fact=1
WHILE @num != 0
BEGIN
SET @fact=@fact * @num
SET @num=@num-1
END
RETURN @fact
END
-----------------------------------------------------------------
--Execute User
Define Function
SELECT dbo.UDF_Factorial(5) as Factorial
------------------------------------------------------------------
--Ex: Function
to Find Employee MAX Salary of Given Dept
CREATE FUNCTION UDF_getMaxSal(@Deptid
int)
RETURNS NUMERIC(10,2)
AS
BEGIN
DECLARE @MaxSal NUMERIC(10,5)
SET @MaxSal=(SELECT TOP 1 Salary FROM
tblEmployee WHERE DeptId=@Deptid ORDER BY Salary DESC)
RETURN @MaxSal
END
GO
--Execution of
UDF in SELECT Statment
SELECT EmpId,EmpName,Address,Deptid,Salary FROM
tblEmployee WHERE Salary=dbo.UDF_getMaxSal(2)
-- Type 2
> Inline Table Valued Function :
Returns Table Object
--Ex: Function
to Return Record of Emplyees whose Salary > given salry
CREATE FUNCTION UDF_getEmpRecordsAboveGivenSal(@Salary int)
RETURNS Table
AS
return (SELECT EmpId,EmpName,Address,Gender,Salary FROM
tblEmployee WHERE Salary > @Salary)
GO
-----------------------------------------------------------------------------
-- Execution
SELECT * FROM dbo.UDF_getEmpRecordsAboveGivenSal(25000)
-- Type 3
> Multi Statement Table Valued
Function :
-- Explicitly defines the structure
of the table to return.
-- Defines column names and
datatypes in the RETURNS clause.
--Ex: Fuction to
get Employee Records with Dept Name
CREATE FUNCTION getEmpByDeptName()
RETURNS
@EmpWithDept Table
(
EmpId int,
EmpName varchar(50),
DeptName varchar(50)
)
AS
BEGIN
INSERT INTO @EmpWithDept SELECT
e.EmpId,e.Empname,d.DeptName FROM
tblDepartment d INNER JOIN
tblEmployee e ON d.DeptId=e.DeptId
return
END
GO
-----------------------------------------------------------------------------
-- Execute Multi
Statement Table Valued Function
SELECT * FROM dbo.getEmpByDeptName()
--Modify or
Alter UDF like Follows
Alter FUNCTION getEmpByDeptName(@DeptName
varchar(50))
RETURNS
@EmpWithDept Table
(
EmpId int,
EmpName varchar(50),
DeptName varchar(50)
)
AS
BEGIN
INSERT INTO @EmpWithDept SELECT
e.EmpId,e.Empname,d.DeptName FROM
tblDepartment d INNER JOIN
tblEmployee e ON d.DeptId=e.DeptId WHERE DeptName=@Deptname
UPDATE
@EmpWithDept SET DeptName='DOT NET' WHERE DeptName='.NET'
return
END
GO
--------------------------------------------------------------------------------------------------------------------------------
-- Execute Multi
Statement Table Valued Function
SELECT * FROM dbo.getEmpByDeptName('.NET')
----------------------------------Triggers-----------------------------------
-----------------------------------------------------------------------------
--Defination : A
trigger is an action that is performed behind-the-scenes when an event occurs
on a table.
-- Types of
Trigger: 1) Instead of/Before 2)
After/For
-- There are Two
Tables with Field and Diffrent name one is tblPersone and another is tblPersonUpdate
SELECT * FROM tblPerson
SELECT * FROM
tblPersonUpdate
-----------------------------------------------------------------------------
--Inserting Records into tblPerson
INSERT INTO tblPerson VALUES('Vinay','Sayaji,Indore',Convert(Varchar,GETDATE(),114))
INSERT INTO tblPerson VALUES('Rahul','Vijay Nagar,Indore',Convert(Varchar,GETDATE(),114))
INSERT INTO tblPerson VALUES('Hitesh','Khargone',Convert(Varchar,GETDATE(),114))
SELECT * FROM tblPerson
SELECT * FROM
tblPersonUpdate
--Creating
Trigger on Table tblPerson After Update will Insert Old Record into
tblPersonUpdate
CREATE TRIGGER UDT_PersonUpdate
ON tblPerson
After UPDATE
AS
DECLARE @id int;
DECLARE @name varchar(50);
DECLARE @address varchar(50);
DECLARE @time varchar(50);
select @id=U.id from deleted U;
select @name=U.name from deleted U;
select @address=U.address from deleted
U;
select @time=U.time from deleted U;
BEGIN
INSERT INTO
tblPersonUpdate(id,name,address,time)VALUES(@id,@name,@address,@time)
PRINT 'Record
Has been Inserted into tblPersonUpdate'
END
--Now Updating in Table tblPersone
UPDATE tblPerson SET address='Bhopal' WHERE id=3
-----------------------------------------------------------------------------
--Now Updated Records in tblPerson
and tblPersonUpdate
SELECT * FROM tblPerson
SELECT * FROM
tblPersonUpdate
No comments:
Post a Comment