NEW
Font size
WorksheetsTN-Chương 4: Thủ tục Lưu trữ trong SQL
Total questions: 30
Worksheet time: 16mins
Thủ tục lưu trữ trong SQL Server được lưu trữ ở đâu?
Một bảng dữ liệu
Trên server trong cơ sở dữ liệu
Trong ứng dụng client
Trong file hệ thống
Lệnh nào được sử dụng để gọi một thủ tục lưu trữ?
INVOKE
EXECUTE hoặc EXEC
TRIGGER
SELECT
Thủ tục lưu trữ giúp gì cho cơ sở dữ liệu?
Tăng kích thước cơ sở dữ liệu
Tăng hiệu suất và bảo mật
Giảm tốc độ truy vấn
Chỉ lưu trữ dữ liệu tạm thời
Cú pháp nào dùng để khai báo một biến trong thủ tục?
DECLARE @TenBien KieuDuLieu
SET @TenBien KieuDuLieu
CREATE @TenBien KieuDuLieu
ALTER @TenBien KieuDuLieu
Tham số trong thủ tục lưu trữ được khai báo như thế nào?
@ThamSo KieuDuLieu
DECLARE @ThamSo KieuDuLieu
SET @ThamSo = KieuDuLieu
CREATE PARAMETER @ThamSo
Lệnh nào dùng để sửa một thủ tục lưu trữ?
MODIFY PROCEDURE
ALTER PROCEDURE
UPDATE PROCEDURE
CHANGE PROCEDURE
Để xóa thủ tục lưu trữ, lệnh nào được sử dụng?
DELETE PROCEDURE
DROP PROCEDURE
REMOVE PROCEDURE
ERASE PROCEDURE
Biến trong thủ tục có thể được sử dụng để làm gì?
Lưu trữ dữ liệu vĩnh viễn
Lưu trữ giá trị tạm thời trong thủ tục
Tạo bảng mới
Xóa cơ sở dữ liệu
Thủ tục nào dưới đây trả về tập hợp kết quả?
INSERT INTO NhanVien VALUES (...)
SELECT * FROM NhanVien
SET @Bien = 10
RETURN 0
Tham số đầu ra (OUTPUT) được dùng để làm gì?
Tạo bảng mới
Trả về giá trị từ thủ tục cho người gọi
Xóa bản ghi
Lặp lại câu lệnh
Thủ tục sau có chức năng gì?
CREATE PROCEDURE sp_ThemPhong @TenPhong NVARCHAR (50)
AS
BEGIN INSERT INTO PhongBan (TenPhong)VALUES (@TenPhong)
END
Trả về danh sách phòng ban
Thêm một phòng ban mới
Cập nhật tên phòng ban
Xóa phòng ban
Câu 12: Cú pháp nào đúng để gọi thủ tục có tham số đầu ra?
EXEC spT huT uc@BienDECLARE@BienINT; EXECspT huT uc@BienOUT P UT
CALL spT huT uc@BienOUT P UT SELECT spT huT uc@Bien
Câu 13: Kết quả của đoạn mã sau là gì?
DECLARE @SoNV INT SET @SoNV = (SELECT COUNT (*)FROM NhanVien)
SELECT @SoNV
Trả về bảng nhân viên
Trả về số lượng nhân viên
Không trả về gì
Lỗi cú pháp
Câu 14: Thủ tục sau trả về gì?
CREATE PROCEDURE sp_KiemTraLuong @MaNV INT, @Luong INT OUTPUT
AS
BEGIN SET @Luong = (SELECT Luong FROM NhanVien WHERE MaNV = @MaNV)
END
Tập hợp kết quả
Giá trị lương qua tham số đầu ra
Mã trạng thái
Không trả về gì
Câu 15: Lệnh …IFELSE được sử dụng trong trường hợp nào?
Lặp lại các câu lệnh
Thực hiện câu lệnh dựa trên điều kiện
Thoát khỏi thủ tục
Tạo biến mới
Câu 16: Kết quả của đoạn mã sau là gì?
DECLARE @i INT = 1 WHILE @i <= 4
BEGIN PRINT CAST(@i AS VARCHAR)SET @i = @i + 1
END
In ra: 1, 2, 3, 4
In ra: 1, 2, 3
In ra: 4, 3, 2, 1
Không in gì
Câu 17: Lệnh BREAK trong vòng lặp WHILE làm gì?
Bỏ qua vòng lặp hiện tại và tiếp tục vòng lặp tiếp theo
Thoát hoàn toàn khỏi vòng lặp
Tăng giá trị biến
Thực thi câu lệnh ELSE
Câu 18: Lệnh CONTINUE trong vòng lặp WHILE có tác dụng gì?
Thoát khỏi thủ tục
Bỏ qua phần còn lại của vòng lặp và kiểm tra lại điều kiện
Dừng vòng lặp vĩnh viễn
Trả về giá trị
Câu 19: Thủ tục sau có lỗi gì? CREATE PROCEDURE sp_TimNV AS BEGIN SELECT * FROM NhanVien WHERE MaNV = @MaNV END
Thiếu tham số @MaNV
Sai cú pháp SELECT
Thiếu RETURN
Thiếu khối TRY…CATCH
Cú pháp nào đúng để xóa thủ tục mà không gây lỗi nếu thủ tục không tồn tại?
DROP PROCEDURE TenThucDROP PROCEDUREIF EXIST TenThuc
DELETE PROCEDURE TenThucALT ERP PROCEDURETenThucDROP
Thủ tục sau có chức năng gì?
CREATE PROCEDURE sp_CapNhatTenNV @MaNV INT, @TenNV NVARCHAR(50)
AS
BEGIN
UPDATE NhanVien SET TenNV = @TenNV WHERE MaNV = @MaNV
END
Thêm nhân viên mới
Cập nhật tên nhân viên
Xóa nhân viên
Trả về danh sách nhân viên
Kết quả của thủ tục sau khi thực thi là gì?
CREATE PROCEDURE sp_TinhLuongTB @LuongTB FLOAT OUTPUT
AS
BEGIN SET @LuongTB = (SELECT AVG(Luong)FROM NhanVien)
END
DECLARE @KetQua FLOAT EXEC sp_TinhLuongTB @KetQua OUTPUT
SELECT @KetQua
Trả về bảng nhân viên
Trả về lương trung bình qua tham số đầu ra
Trả về mã trạng thái
Không trả về gì
Thủ tục sau có hợp lệ không?
CREATE PROCEDURE sp_TimNVTheoPhong @MaPhong INT = 1
AS
BEGIN
SELECT *
FROM NhanVien
WHERE MaPhong = @MaPhong
END
Không, vì thiếu tham số đầu ra
Có, vì sử dụng tham số mặc định hợp lệ
Không, vì sai cú pháp SELECT
Không, vì thiếu khối TRY…CATCH
Kết quả của đoạn mã sau là gì?
DECLARE @i INT = 1 WHILE @i <= 6
BEGIN
IF @i = 4 BREAK PRINT 'Số: '+ CAST(@i AS VARCHAR)SET @i = @i + 1
END
In ra: Số: 1, 2, 3
In ra: Số: 1, 2, 3, 4
In ra: Số: 4, 5, 6
Không in gì
Thủ tục sau trả về gì?
CREATE PROCEDURE sp_KiemTraPhong @MaPhong INT
AS
BEGIN
IF EXISTS (SELECT 1 FROM PhongBan WHERE MaPhong = @MaPhong)
RETURN 1
RETURN 0
END
Tập hợp kết quả
Mã trạng thái (1: tồn tại, 0: không tồn tại)
Tham số đầu ra
Không trả về gì
Thủ tục sau có lỗi gì?
CREATE PROCEDURE sp_XoaNV @MaNV INT
AS
BEGIN
DELETE FROM NhanVien WHERE MaNV = MaNV
END
Thiếu tham số đầu ra
Sai cú pháp trong điều kiện WHERE
Thiếu khối TRY…CATCH
Thiếu khai báo biến
Thủ tục sau có thể thực thi mà không truyền tham số không?
CREATE PROCEDURE sp_LayNVTheoLuong @LuongMin INT = 3000, @LuongMax INT
AS
BEGIN
SELECT *
FROM NhanVien
WHERE Luong BETWEEN @LuongMin AND @LuongMax
END
Có, vì cả hai tham số đều có giá trị mặc định
Không, vì tham số @LuongMax không có giá trị mặc định
Có, nhưng sẽ gây lỗi cú pháp
Không, vì thiếu tham số đầu ra
Khi sử dụng ALTER PROCEDURE, điều gì được giữ nguyên?
Nội dung thủ tục
Tên thủ tục và quyền truy cập
Tham số đầu ra
Giá trị trả về mặc định
Kết quả của thủ tục sau là gì?
CREATE PROCEDURE sp_DemNVTheoPhong @MaPhong INT, @SoNV INT OUTPUT
AS
BEGIN SET @SoNV = (SELECT COUNT(*)FROM NhanVien WHERE MaPhong = @MaPhong) IF @SoNV > 0
SELECT *
FROM NhanVien
WHERE MaPhong = @MaPhong
END
Chỉ trả về tham số đầu ra
Trả về cả tham số đầu ra và tập hợp kết quả
Chỉ trả về tập hợp kết quả
Không trả về gì nếu không có nhân viên
Thủ tục sau sử dụng …TRYCATCH để làm gì?
CREATE PROCEDURE sp_ThemNV @TenNV NVARCHAR(50), @Luong INT
AS
BEGIN BEGIN TRY INSERT INTO NhanVien (TenNV , Luong)VALUES (@TenNV, @Luong) RETURN 0 END TRY BEGIN CATCH RETURN -1 END CATCH
END
Trả về bảng nhân viên
Xử lý lỗi khi thêm bản ghi và trả về mã trạng thái
Tính tổng lương
Kiểm tra tham số đầu vào
