-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSp.sql
More file actions
175 lines (169 loc) · 9.76 KB
/
Copy pathSp.sql
File metadata and controls
175 lines (169 loc) · 9.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
CREATE PROCEDURE SP_KT_NHANVIENLAM
@CMND NCHAR(10)
AS
BEGIN
IF(EXISTS(SELECT * FROM NhanVien WHERE CMND=@CMND AND TrangThaiXoa=0))
BEGIN
RAISERROR(N'Nhân viên đang làm việc tại chi nhánh',16,1)
RETURN
END
IF(EXISTS(SELECT * FROM LINK1.NGANHANG.DBO.NhanVien WHERE CMND=@CMND AND TrangThaiXoa=0))
BEGIN
RAISERROR(N'Nhân viên đang làm việc tại chi nhánh khác',16,2)
RETURN
END
IF(EXISTS(SELECT * FROM NhanVien WHERE CMND=@CMND))
BEGIN
RAISERROR(N'Nhân viên đã từng làm việc tại chi nhánh',16,3)
RETURN
END
END
GO
CREATE PROC SP_KHOIPHUCNHANVIEN
@CMND NCHAR(10)
AS
BEGIN
UPDATE NhanVien
SET TrangThaiXoa=0
WHERE CMND=@CMND
END
GO
CREATE PROCEDURE [dbo].[SP_CHUYENNHANVIEN]
@MANV NCHAR(10), @MACN NCHAR(10)
AS
BEGIN
--TH nhan vien khong ton tai hoac da xoa
DECLARE @TrangThaiXoa BIT
DECLARE @CMND NCHAR(10)
DECLARE @MAMOI NCHAR(10)
SELECT @TrangThaiXoa=TrangThaiXoa, @CMND=CMND FROM NhanVien WHERE MANV=@MANV
IF(@TrangThaiXoa IS NULL OR @TrangThaiXoa=1)
BEGIN
RAISERROR ( 'Nhan vien khong ton tai trong chi nhanh', 16, 1)
RETURN
END
--TH nhan vien chua thuc hien giao dich
IF(NOT EXISTS(SELECT * FROM GD_CHUYENTIEN WHERE MANV=@MANV)AND NOT EXISTS(SELECT * FROM GD_GOIRUT WHERE MANV=@MANV))
BEGIN
--TH nhan vien da lam viec tai chi nhanh do truoc day
IF(EXISTS(SELECT * FROM LINK0.NGANHANG.DBO.NhanVien WHERE CMND=@CMND AND MACN=@MACN))
BEGIN
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION;
DELETE FROM NhanVien WHERE MANV=@MANV
UPDATE LINK0.NGANHANG.DBO.NhanVien SET TrangThaiXoa=0 WHERE CMND=@CMND AND MACN=@MACN
COMMIT TRANSACTION;
RETURN;
END
--TH nhan vien chua lam viec tai chi nhanh do
UPDATE NhanVien SET MACN=@MACN WHERE MANV=@MANV
RETURN
END
--TH da thuc hien giao dich
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION;
UPDATE NhanVien SET TrangThaiXoa=1 WHERE MANV=@MANV;
--TH nhan vien da lam viec tai chi nhanh do truoc day
IF(EXISTS(SELECT * FROM LINK0.NGANHANG.DBO.NhanVien WHERE CMND=@CMND AND MACN=@MACN))
BEGIN
UPDATE LINK0.NGANHANG.DBO.NHANVIEN SET TrangThaiXoa=0 WHERE CMND=@CMND AND MACN=@MACN
END
ELSE
BEGIN
--TH nhan vien chua lam viec tai chi nhanh do
SET @MAMOI=(SELECT MAX(MANV) FROM LINK0.NGANHANG.DBO.NhanVien)
SET @MAMOI = 'NV'+CAST((CAST(SUBSTRING(@MAMOI, 3, LEN(@MAMOI) - 2) AS INT)+1) AS VARCHAR)
INSERT INTO LINK0.NGANHANG.DBO.NhanVien (MANV,HO,TEN,CMND,DIACHI,PHAI,SODT,MACN,TrangThaiXoa)
SELECT @MAMOI,HO,TEN,CMND,DIACHI,PHAI,SODT,@MACN,0 FROM NhanVien WHERE MANV=@MANV
END
COMMIT TRANSACTION;
END
GO
/****** Object: StoredProcedure [dbo].[SP_DANGNHAP] Script Date: 21/5/2023 7:05:44 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[SP_DANGNHAP]
@TENLOGIN NVARCHAR (50)
AS
DECLARE @TENUSER NVARCHAR(50)
SELECT @TENUSER=NAME FROM sys.sysusers WHERE sid = SUSER_SID(@TENLOGIN)
SELECT USERNAME = @TENUSER,
HOTEN = (SELECT HO+ ' '+ TEN FROM NHANVIEN WHERE MANV = @TENUSER ),
TENNHOM= NAME
FROM sys.sysusers
WHERE UID = (SELECT GROUPUID
FROM SYS.SYSMEMBERS
WHERE MEMBERUID= (SELECT UID FROM sys.sysusers
WHERE NAME=@TENUSER))
GO
/****** Object: StoredProcedure [dbo].[SP_TAOLOGIN] Script Date: 21/5/2023 7:05:44 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[SP_TAOLOGIN]
@LGNAME VARCHAR(50),
@PASS VARCHAR(50),
@USERNAME VARCHAR(50),
@ROLE VARCHAR(50)
AS
BEGIN
DECLARE @RET INT
EXEC @RET= SP_ADDLOGIN @LGNAME, @PASS,'NGANHANG'
IF (@RET =1)
BEGIN-- LOGIN NAME BI TRUNG
RAISERROR(N'Login name đã tồn tại',16,1)
RETURN
END
EXEC @RET= SP_GRANTDBACCESS @LGNAME, @USERNAME
IF (@RET =1) -- USER NAME BI TRUNG
BEGIN
EXEC SP_DROPLOGIN @LGNAME
RAISERROR(N'User name đã tồn tại',16,2)
RETURN
END
EXEC sp_addrolemember @ROLE, @USERNAME
IF @ROLE= 'NGANHANG' OR @ROLE= 'CHINHANH'
BEGIN
EXEC sp_addsrvrolemember @LGNAME, 'SecurityAdmin'
END
RETURN -- THANH CONG
END
GO
/****** Object: StoredProcedure [dbo].[SP_XOANHANVIEN] Script Date: 21/5/2023 7:05:44 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[SP_XOANHANVIEN]
@MANV NCHAR(10)
AS
BEGIN
IF(EXISTS(SELECT * FROM GD_CHUYENTIEN WHERE MANV=@MANV) OR EXISTS(SELECT * FROM GD_GOIRUT WHERE MANV=@MANV))
UPDATE NhanVien
SET TrangThaiXoa=1
WHERE MANV=@MANV
ELSE DELETE FROM NhanVien WHERE MANV=@MANV
END
GO
/****** Object: StoredProcedure [dbo].[Xoa_Login] Script Date: 21/5/2023 7:05:44 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[Xoa_Login]
@LGNAME VARCHAR(50),
@USRNAME VARCHAR(50)
AS
BEGIN
BEGIN TRY
EXEC SP_DROPUSER @USRNAME
EXEC SP_DROPLOGIN @LGNAME
END TRY
BEGIN CATCH
RAISERROR(N'Tài khoản không tồn tại',16,1)
END CATCH
END
GO