Mình dùng store procedure như cách các bạn chỉ để tự động sinh Mã cho học sinh bằng cách lấy 2 ký tự cuối của năm vào học nối với số tăng dần
ví dụ :
Học sinh Nguyễn Văn A có năm vào học là 2001 thì có mã là 01001
Học sinh Nguyễn Văn B có năm vào học là 2001 thì có mã là 01002
Học sinh Nguyễn Văn C có năm vào học là 2002 thì có mã là 02001
Học sinh Nguyễn Văn D có năm vào học là 2002 thì có mã là 02002
Nhưng khi insert dữ liệu vào thì bị lỗi. Đoạn mã của mình như sau
Code:
CREATE TABLE HOCSINH
(
MAHS VARCHAR(5) PRIMARY KEY,
TENHS NVARCHAR (50) NOT NULL,
NAMVAOHOC VARCHAR(4) NOT NULL
)
GO
CREATE PROC PROC_TAOMAHS @MATAO VARCHAR(5) OUTPUT
AS
IF NOT EXISTS (SELECT * FROM HOCSINH) SELECT @MATAO = '00000'
ELSE
DECLARE @NAMVAOHOC VARCHAR(4)
SELECT @MATAO= MAX(RIGHT(MAHS,3)) FROM HOCSINH WHERE LEFT(MAHS,2) = RIGHT(@NAMVAOHOC,2)
SELECT @MATAO =
CASE
WHEN @MATAO >=0 AND @MATAO <9 THEN RIGHT(@NAMVAOHOC,2) +'00'+ CONVERT(VARCHAR,@MATAO + 1)
WHEN @MATAO >=9 AND @MATAO <99 THEN RIGHT(@NAMVAOHOC,2)+ '0'+ CONVERT(VARCHAR,@MATAO + 1)
WHEN @MATAO >=99 AND @MATAO <999 THEN RIGHT(@NAMVAOHOC,2) + CONVERT(VARCHAR,@MATAO + 1)
END
GO
CREATE PROC PROC_THEMHS @TENHS NVARCHAR(50),@NAMVAOHOC VARCHAR(4)
AS BEGIN
DECLARE @MATAO VARCHAR(5)
EXEC PROC_TAOMAHS @MATAO OUTPUT
INSERT INTO HOCSINH (MAHS,TENHS,NAMVAOHOC) VALUES (@MATAO,@TENHS,@NAMVAOHOC)
END
GO
EXEC PROC_THEMHS 'Nguyễn Văn A','2001'
Bookmarks