wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

MS SQL SERVER - SP

Total questions: 40

Worksheet time: 30mins

Name
Class
Date
1.
Cú pháp nào đúng để tạo stored procedure trong SQL Server?
a)
CREATE PROCEDURE sp_name() { ... }
b)
DEFINE PROC sp_name BEGIN ... END
c)
CREATE PROC sp_name AS BEGIN ... END
d)
NEW PROCEDURE sp_name AS ... END
2.
Thủ tục truy vấn danh sách sản phẩm theo danh mục, tham số nào phù hợp nhất?
a)
@Ma_DM FLOAT
b)
@DanhMuc VARCHAR(50)
c)
@ID NVARCHAR(MAX)
d)
@DanhMucID INT
3.
Lệnh nào dùng để thêm mới khách hàng trong stored procedure?
a)
INSERT INTO KhachHang VALUES (@Ten, @SDT, @DiaChi)
b)
CREATE KhachHang VALUES @Ten, @SDT
c)
INSERT KhachHang (@Ten, @SDT, @DiaChi)
d)
ADD KhachHang SET Ten=@Ten, SDT=@SDT
4.
Để trả về ID vừa thêm mới, ta dùng hàm nào?
a)
NEW_ID()
b)
SCOPE_IDENTITY()
c)
LAST_ID()
d)
GET_IDENTITY()
5.
Cú pháp UPDATE trong stored procedure sửa thông tin sản phẩm:
a)
ALTER SanPham SET TenSP=@Ten FOR MaSP=@Ma
b)
CHANGE SanPham TenSP=@Ten WHERE MaSP=@Ma
c)
MODIFY SanPham SET TenSP=@Ten WHERE MaSP=@Ma
d)
UPDATE SanPham SET TenSP=@Ten WHERE MaSP=@Ma
6.
Khi sửa giá sản phẩm, nên kiểm tra điều kiện gì?
a)
Không cần kiểm tra
b)
Giá phải là số nguyên
c)
Giá phải lớn hơn 0
d)
Giá phải nhỏ hơn 1000
7.
Lệnh xóa khách hàng theo mã trong stored procedure:
a)
ERASE FROM KhachHang WHERE MaKH=@Ma
b)
REMOVE KhachHang WHERE MaKH=@Ma
c)
DELETE FROM KhachHang WHERE MaKH=@Ma
d)
DROP KhachHang WHERE MaKH=@Ma
8.
Trước khi xóa đơn hàng, nên kiểm tra:
a)
Chỉ cần có mã đơn hàng
b)
Không cần kiểm tra gì
c)
Kiểm tra ngày tạo đơn
d)
Có chi tiết đơn hàng liên quan không
9.
Để truy vấn sản phẩm có lọc theo giá, tham số nào cần thêm?
a)
@GiaTien FLOAT
b)
@GiaMin DECIMAL(18,2), @GiaMax DECIMAL(18,2)
c)
@Price VARCHAR(50)
d)
@Gia INT
10.
Lệnh nào thực thi stored procedure có tham số?
a)
CALL sp_TimSanPham WITH @Ten
b)
EXEC sp_TimSanPham @Ten=N'Laptop'
c)
EXECUTE sp_TimSanPham SET @Ten
d)
RUN sp_TimSanPham(@Ten)
11.
Khi thêm đơn hàng mới, thứ tự thêm dữ liệu đúng là:
a)
Thêm chi tiết đơn hàng trước
b)
Thêm đơn hàng trước, sau đó thêm chi tiết đơn hàng
c)
Thêm đồng thời cả hai
d)
Không quan trọng thứ tự
12.
Từ khóa nào dùng để sắp xếp kết quả trong stored procedure truy vấn?
a)
ARRANGE BY
b)
SORT BY
c)
ORGANIZE BY
d)
ORDER BY
13.
Khi cập nhật số lượng tồn kho, nên dùng:
a)
UPDATE KhoHang SET SoLuong = @SoLuongBan WHERE MaSP=@Ma
b)
UPDATE KhoHang SET SoLuong = SoLuong - @SoLuongBan WHERE MaSP=@Ma
c)
ALTER KhoHang SET SoLuong -= @SoLuongBan
d)
MODIFY KhoHang SoLuong = SoLuong - @SoLuongBan
14.
Để xóa mềm (soft delete) sản phẩm, ta nên:
a)
DELETE FROM SanPham WHERE MaSP=@Ma
b)
UPDATE SanPham SET DaXoa=1 WHERE MaSP=@Ma
c)
DROP SanPham WHERE MaSP=@Ma
d)
REMOVE SanPham SET Xoa=True
15.
Tham số OUTPUT dùng để:
a)
In kết quả ra màn hình
b)
Trả về giá trị từ stored procedure
c)
Nhận giá trị đầu vào
d)
Xuất dữ liệu ra file
16.
Khi thêm nhân viên, nên kiểm tra:
a)
Chỉ cần có tên
b)
Mã nhân viên phải là số
c)
Email không được trùng
d)
Không cần kiểm tra
17.
Cấu trúc IF trong stored procedure để kiểm tra tồn tại:
a)
IF EXIST SanPham WHERE MaSP=@Ma
b)
IF HAS SanPham.MaSP=@Ma
c)
IF EXISTS (SELECT 1 FROM SanPham WHERE MaSP=@Ma)
d)
IF CHECK (SELECT * FROM SanPham)
18.
Để tìm kiếm sản phẩm theo tên gần đúng:
a)
WHERE TenSP = @Tu
b)
WHERE TenSP LIKE N'%'+ @Tu + '%'
c)
WHERE TenSP CONTAINS @Tu
d)
WHERE TenSP MATCH @Tu
19.
Khi xóa danh mục có sản phẩm, ta nên:
a)
Chuyển sản phẩm sang danh mục khác tự động
b)
Xóa luôn cả sản phẩm
c)
Bỏ qua kiểm tra
d)
Kiểm tra và báo lỗi nếu còn sản phẩm
20.
Lệnh nào tính tổng doanh thu theo tháng trong stored procedure?
a)
SELECT TOTAL(TongTien) FROM DonHang
b)
SELECT SUM(TongTien) FROM DonHang WHERE MONTH(NgayDat)=@Thang
c)
SELECT COUNT(TongTien) WHERE Thang=@Thang
d)
SELECT ADD(TongTien) FROM DonHang
21.
Transaction trong stored procedure thêm đơn hàng:
a)
OPEN TRANSACTION ... CLOSE
b)
START TRANS ... END TRANS
c)
BEGIN TRANSACTION ... COMMIT / ROLLBACK
d)
INIT TRANS ... FINISH
22.
Khi cập nhật giá sản phẩm hàng loạt theo danh mục:
a)
UPDATE ALL SanPham SET Gia = @Gia
b)
UPDATE SanPham SET Gia = Gia * @HeSo WHERE DanhMucID=@DanhMuc
c)
CHANGE Gia IN SanPham
d)
MODIFY SanPham.Gia BY @HeSo
23.
Để xóa các đơn hàng quá 5 năm:
a)
DELETE DonHang OLDER THAN 5 YEARS
b)
DELETE FROM DonHang WHERE DATEDIFF(YEAR, NgayDat, GETDATE()) > 5
c)
ERASE DonHang.Old(5)
d)
REMOVE DonHang WHERE Years > 5
24.
Stored procedure phân trang kết quả sử dụng:
a)
LIMIT @Skip, @Take
b)
RANGE (@Skip TO @Take)
c)
OFFSET @Skip ROWS FETCH NEXT @Take ROWS ONLY
d)
PAGE @Number SIZE @Size
25.
Khi thêm chi tiết đơn hàng, cần kiểm tra:
a)
Giá phải bằng 0
b)
Chỉ cần có mã sản phẩm
c)
Không cần kiểm tra gì
d)
Số lượng tồn kho đủ hay không
26.

Tìm lỗi trong stored procedure sau:
CREATE PROC sp_TimSanPham
@Ten VARCHAR(100)
BEGIN
SELECT *
FROM SanPham
WHERE TenSP LIKE @Ten END

a)
Thiếu GO sau END
b)
Thiếu dấu % trong LIKE
c)
Thiếu AS trước BEGIN
d)
Sai kiểu dữ liệu VARCHAR
27.

Sửa lỗi trong stored procedure thêm khách hàng: CREATE PROCEDURE sp_ThemKhachHang

@Ten NVARCHAR(100),

@SDT VARCHAR(15)

AS

BEGIN

INSERT INTO KhachHang (Ten, SDT)

VALUES (@Ten, @SDT);

SELECT @@IDENTITY AS MaKhachHangMoi;

END;

a)
Thiếu RETURN
b)
Thiếu BEGIN...END
c)
Dùng SCOPE_IDENTITY() thay vì @@IDENTITY
d)
Sai cú pháp INSERT
28.

Tìm lỗi trong stored procedure cập nhật giá:
CREATE PROCEDURE sp_SuaGia

@MaSP INT,

@GiaMoi MONEY

AS

BEGIN

UPDATE SanPham

SET Gia = @GiaMoi

PRINT N'Cập nhật giá sản phẩm thành công!';

END;

a)
Thiếu BEGIN TRANSACTION
b)
Thiếu WHERE MaSP=@MaSP
c)
Sai kiểu MONEY
d)
Thiếu RETURN
29.

Chỉnh sửa stored procedure xóa sản phẩm:
CREATE PROC sp_XoaSanPham
@Ma INT
AS
DELETE SanPham WHERE MaSP=@Ma

a)
Tất cả đều sai
b)
Sai tên tham số
c)
Thiếu BEGIN...END
d)
Thiếu FROM sau DELETE
30.

Sửa lỗi trong stored procedure tìm sản phẩm theo khoảng giá:
CREATE PROC sp_TimTheoGia

@Min INT, @Max INT

AS

BEGIN

SELECT * FROM SanPham

WHERE Gia > @Min AND Gia < @Max

END

a)
Không có lỗi
b)
Nên dùng DECIMAL thay vì INT cho giá
c)
Thiếu ORDER BY
d)
Sai cú pháp WHERE
31.

Tìm và sửa lỗi trong stored procedure thêm đơn hàng:
CREATE PROC sp_ThemDonHang

@MaKH INT, @NgayDat DATE

AS

BEGIN TRANSACTION

INSERT INTO DonHang VALUES (@MaKH, @NgayDat)

COMMIT

a)
Thiếu END
b)
Thiếu ROLLBACK khi có lỗi (TRY...CATCH)
c)
Sai cú pháp INSERT
d)
Sai kiểu DATE
32.

Sửa stored procedure cập nhật tồn kho:
CREATE PROC sp_CapNhatKho

@MaSP INT, @SoLuong INT

AS

BEGIN

UPDATE KhoHang SET SoLuong = @SoLuong

WHERE MaSP = @MaSP

END

a)
Thiếu kiểm tra SoLuong >= @SoLuong
b)
Không có lỗi
c)
Nên dùng SoLuong = SoLuong - @SoLuong để trừ dần
d)
Sai kiểu dữ liệu
33.

Chỉnh sửa stored procedure xóa đơn hàng:
CREATE PROC sp_XoaDonHang

@MaDH INT

AS

BEGIN

DELETE FROM DonHang WHERE MaDH=@MaDH

DELETE FROM ChiTietDonHang WHERE MaDH=@MaDH

END

a)
Sai cú pháp DELETE
b)
Thiếu kiểm tra EXISTS
c)
Thiếu TRANSACTION
d)
Sai thứ tự: phải xóa ChiTietDonHang trước
34.

Sửa lỗi stored procedure tính tổng doanh thu:
CREATE PROC sp_DoanhThu

@Thang INT, @Nam INT

AS

BEGIN

SELECT SUM(TongTien) FROM DonHang

WHERE Thang = @Thang AND Nam = @Nam

END

a)
Không có lỗi
b)
Sai hàm SUM
c)
Thiếu GROUP BY
d)
Dùng MONTH(NgayDat)=@Thang và YEAR(NgayDat)=@Nam
35.

Tìm lỗi trong stored procedure thêm sản phẩm:
CREATE PROC sp_ThemSanPham

@Ten NVARCHAR(200), @Gia DECIMAL(18,2), @DanhMucID INT

AS

INSERT INTO SanPham(TenSP, Gia, DanhMucID)

VALUES (@Ten, @Gia, @DanhMucID)

a)
Sai kiểu DECIMAL
b)
Nên kiểm tra DanhMucID có tồn tại không
c)
Thiếu BEGIN...END
d)
Sai cú pháp INSERT
36.

Sửa stored procedure cập nhật thông tin khách hàng:
CREATE PROC sp_SuaKhachHang

@Ma INT, @Ten NVARCHAR(100), @Email VARCHAR(100)

AS

BEGIN

IF EXISTS(SELECT * FROM KhachHang WHERE Email=@Email)

BEGIN RETURN -1

END

UPDATE KhachHang SET Ten=@Ten, Email=@Email WHERE MaKH=@Ma

END

a)
Thiếu ELSE
b)
Sai cú pháp IF
c)
Kiểm tra EXISTS phải loại trừ chính bản ghi đang sửa: AND MaKH<>@Ma
d)
Không cần kiểm tra Email
37.

Chỉnh sửa stored procedure xóa danh mục:
CREATE PROC sp_XoaDanhMuc
@MaDM INT
AS
BEGIN
DELETE FROM DanhMuc WHERE ID=@MaDM
END

a)
Thiếu TRANSACTION
b)
Sai cú pháp DELETE
c)
Không có lỗi
d)
Cần kiểm tra còn sản phẩm không trước khi xóa
38.

Sửa stored procedure phân trang: CREATE PROC sp_DanhSachSanPham

@PageNumber INT, @PageSize INT

AS

BEGIN

SELECT FROM SanPham LIMIT @PageSize OFFSET (@PageNumber-1)@PageSize

END

a)
Sai công thức tính OFFSET
b)
Thiếu ORDER BY
c)

SQL Server dùng OFFSET...FETCH thay vì LIMIT
Sai công thức tính OFFSET

d)
SQL Server dùng OFFSET...FETCH thay vì LIMIT
39.

Tìm lỗi trong stored procedure thêm chi tiết đơn hàng:
CREATE PROC sp_ThemChiTiet

@MaDH INT, @MaSP INT, @SoLuong INT, @DonGia MONEY

AS

BEGIN

INSERT INTO ChiTietDonHang

VALUES (@MaDH, @MaSP, @SoLuong, @DonGia)

END

a)
Cần kiểm tra tồn kho trước khi thêm
b)
Thiếu TRANSACTION
c)
Sai kiểu MONEY
d)
Sai cú pháp INSERT
40.

Sửa stored procedure đổi trạng thái đơn hàng:
CREATE PROC sp_DoiTrangThai

@MaDH INT, @TrangThai NVARCHAR(50)

AS

BEGIN

UPDATE DonHang

SET TrangThai = @TrangThai, NgayCapNhat = GETDATE()

WHERE MaDH = @MaDH

IF @@ROWCOUNT = 0

RETURN -1

END

a)
Không có lỗi
b)
Thiếu BEGIN...END trong IF
c)
Sai hàm GETDATE()
d)
Nên dùng RAISERROR thay vì RETURN -1 để thông báo lỗi rõ ràng