Answer for Question No 2:
CREATE TABLE [dbo].[dept]
(
[deptno] [int] NULL,
[dname] [varchar](50) NULL,
[location] [varchar](50) NULL
)
INSERT INTO dept(deptno,dname,location ) VALUES(20,'Mechanical','Nilanga')
INSERT INTO dept(deptno,dname,location ) VALUES(30,'Electronics','Mumbai')
INSERT INTO dept(deptno,dname,location ) VALUES(40,'Computer','Akola')
INSERT INTO dept(deptno,dname,location ) VALUES(50,'Civil','Nagpur')
CREATE TABLE [dbo].[dept_audit]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[DeptId] [int] NULL,
[ColumnName] [varchar](50) NULL,
[OldValue] [varchar](50) NULL,
[NewValue] [varchar](50) NULL
)
CREATE PROCEDURE sp_dept_Update
(
@dname VARCHAR(50),
@loc VARCHAR(50),
@deptno INT
)
AS
BEGIN
DECLARE @deptname VARCHAR(50),@location VARCHAR(50)
SELECT @deptno=deptno,@deptname=dname,@location=location FROM dept WHERE deptno=@deptno
UPDATE dept SET dname = @dname, location = @loc
WHERE deptno =@deptno
IF(@deptname<>@dname)
BEGIN
INSERT INTO dept_audit(DeptId,ColumnName,OldValue,NewValue) values(@deptno,'dname',@deptname,@dname)
END
IF(@location<>@loc)
BEGIN
INSERT INTO dept_audit(DeptId,ColumnName,OldValue,NewValue) values(@deptno,'location',@location,@loc)
END
END
SELECT deptno,dname,location FROM dept
exec sp_dept_Update 'Computer2','Akola2',40
Dude558, if this helps please login to Mark As Answer. | Alert Moderator