wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

TN-Chương 5: Con trỏ trong SQL Server

Total questions: 30

Worksheet time: 18mins

Name
Class
Date
1.

Con trỏ (Cursor) trong SQL Server được sử dụng để làm gì?

a)

Xử lý dữ liệu theo tập hợp (set-based)

b)

Duyệt và xử lý từng dòng dữ liệu (row-by-row)

c)

Tạo bảng tạm thời

d)

Thực hiện các phép toán số học

2.

Bước nào sau đây KHÔNG thuộc quy trình sử dụng con trỏ?

a)

DECLARE

b)

OPEN

c)

COMMIT

d)

FETCH

3.

@@FETCH_STATUS trả về giá trị nào khi fetch thành công?

a)

-1

b)

0

c)

-2

d)

1

4.

Loại con trỏ nào chỉ cho phép duyệt tiến (forward-only)?

a)

Static Cursor

b)

Dynamic Cursor

c)

Keyset Cursor

d)

Fast Forward Cursor

5.

Hậu quả khi không DEALLOCATE con trỏ là gì?

a)

Gây lỗi cú pháp

b)

Tăng hiệu suất truy vấn

c)

Có thể gây memory leak

d)

Tự động đóng con trỏ

6.

Câu lệnh nào dùng để đóng con trỏ?

a)

CLOSE cursor_name

b)

DROP cursor_name

c)

RELEASE cursor_name

d)

END cursor_name

7.

Hàm trả về giá trị vô hướng (Scalar UDF) trả về kiểu dữ liệu nào?

a)

Một bảng

b)

Một giá trị đơn (int, varchar, v.v.)

c)

Một tập hợp các dòng

d)

Một con trỏ

8.

Cú pháp nào đúng để tạo một Scalar UDF?

a)

CREATE FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS TABLE AS ...

b)

CREATE FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS INT AS BEGIN RETURN DATEDIFF(YEAR, @BirthDate, GETDATE()); END

c)

CREATE FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS @table TABLE ...

d)

ALTER FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS INT AS ...

9.

Scalar UDF có thể làm gì trong SQL Server?

a)

Sửa dữ liệu trong bảng cố định

b)

Tích hợp trong câu lệnh SELECT và WHERE

c)

Gọi stored procedure

d)

Trả về nhiều dòng dữ liệu

10.

Nhược điểm chính của Scalar UDF là gì?

a)

Không thể gọi trong truy vấn

b)

Có thể chậm khi gọi nhiều lần trên tập dữ liệu lớn

c)

Chỉ trả về kiểu bảng

d)

Không hỗ trợ tham số

11.

Tùy chọn nào giúp cải thiện hiệu suất của Scalar UDF?

a)

WITH ENCRYPTION

b)

WITH SCHEMABINDING

c)

WITH EXECUTE AS

d)

WITH RECOMPILE

12.

Cách gọi Scalar UDF đúng là gì?

a)

SELECT * FROM dbo.GetAge('1990-01-01')

b)

SELECT dbo.GetAge('1990-01-01') AS Age

c)

EXEC dbo.GetAge @BirthDate = '1990-01-01'

d)

CALL dbo.GetAge('1990-01-01')

13.

Hàm trả về biến bảng (Multi-statement TVF) sử dụng gì để lưu trữ dữ liệu?

a)

Bảng cố định

b)

Biến bảng (@table)

c)

Con trỏ

d)

Temp table (#table)

14.

Cú pháp nào đúng để tạo Multi-statement TVF?

a)

CREATE FUNCTION dbo.GetEmps () RETURNS TABLE AS RETURN (SELECT ...)

b)

CREATE FUNCTION dbo.GetEmps (@DeptID INT) RETURNS @emps TABLE (ID INT) AS BEGIN INSERT INTO @emps ... RETURN; END

c)

CREATE FUNCTION dbo.GetEmps () RETURNS INT AS BEGIN RETURN 1; END

d)

ALTER FUNCTION dbo.GetEmps () RETURNS TABLE AS ...

15.

Multi-statement TVF có thể làm gì?

a)

Thực hiện nhiều câu lệnh T-SQL trong thân hàm

b)

Trả về giá trị vô hướng

c)

Sửa dữ liệu trong bảng cố định

d)

Gọi stored procedure trực tiếp

16.

Nhược điểm của Multi-statement TVF là gì?

a)

Không thể dùng trong JOIN

b)

Biến bảng không có index/statistics, chậm với dữ liệu lớn

c)

Chỉ hỗ trợ một câu SELECT

d)

Không thể gọi với tham số

17.

Cách gọi Multi-statement TVF đúng là gì?

a)

SELECT dbo.GetEmps(1)

b)

SELECT * FROM dbo.GetEmps(1)

c)

EXEC dbo.GetEmps @DeptID = 1

d)

CALL dbo.GetEmps(1)

18.

Multi-statement TVF phù hợp nhất khi nào?

a)

Xử lý logic phức tạp với nhiều câu lệnh

b)

Trả về một giá trị đơn

c)

Cần index trên bảng trả về

d)

Thay thế con trỏ hoàn toàn

19.

Hàm trả về giá trị bảng (Inline TVF) khác Multi-statement TVF ở điểm nào?

a)

Chỉ dùng một câu SELECT, không BEGIN/END

b)

Trả về giá trị vô hướng

c)

Hỗ trợ sửa dữ liệu bảng cố định

d)

Không thể dùng trong JOIN

20.

Cú pháp nào đúng để tạo Inline TVF?

a)

CREATE FUNCTION dbo.GetActiveEmps () RETURNS @table TABLE ...

b)

CREATE FUNCTION dbo.GetActiveEmps () RETURNS TABLE AS RETURN (SELECT ...)

c)

CREATE FUNCTION dbo.GetActiveEmps () RETURNS INT AS BEGIN ... END

d)

ALTER FUNCTION dbo.GetActiveEmps () RETURNS TABLE AS BEGIN ... END

21.

Ưu điểm chính của Inline TVF là gì?

a)

Hỗ trợ nhiều câu lệnh T-SQL

b)

Hiệu suất cao, được tối ưu bởi SQL Server

c)

Có thể sửa dữ liệu bảng cố định

d)

Hỗ trợ gọi stored procedure

22.

Cách sử dụng Inline TVF với CROSS APPLY là gì?

4 lines
23.

Cách sử dụng Inline TVF với CROSS APPLY là gì?

a)

SELECT * FROM Departments d CROSS APPLY dbo.GetActiveEmps(d.DeptID) e

b)

SELECT * FROM dbo.GetActiveEmps(d.DeptID) CROSS APPLY Departments d

c)

EXEC dbo.GetActiveEmps CROSS APPLY Departments

d)

CALL dbo.GetActiveEmps(d.DeptID) WITH Departments

24.

Khi nào nên ưu tiên Inline TVF thay vì Multi-statement TVF?

a)

Khi cần xử lý logic phức tạp với nhiều câu lệnh

b)

Khi cần hiệu suất cao với một câu SELECT

c)

Khi cần sửa dữ liệu bảng cố định

d)

Khi cần gọi stored procedure

25.

Quy tắc nào bắt buộc khi tạo UDF?

a)

Phải gọi stored procedure

b)

Tên hàm phải duy nhất trong schema

c)

Phải sửa dữ liệu bảng cố định

d)

Phải dùng vòng lặp WHILE

26.

Hạn chế của UDF là gì?

a)

Không thể dùng trong SELECT

b)

Không thể sửa dữ liệu bảng cố định

c)

Không thể gọi với tham số

d)

Không hỗ trợ WITH SCHEMABINDING

27.

Cú pháp nào đúng để chỉnh sửa Scalar UDF?

a)

ALTER FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS TABLE AS ...

b)

ALTER FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS INT AS BEGIN ... END

c)

DROP FUNCTION dbo.GetAge (@BirthDate DATE)

d)

CREATE FUNCTION dbo.GetAge (@BirthDate DATE) RETURNS @table TABLE ...

28.

Khi chỉnh sửa UDF có SCHEMABINDING, cần làm gì trước?

a)

Thêm tham số mới

b)

Xóa ràng buộc SCHEMABINDING hoặc DROP hàm

c)

Gọi stored procedure

d)

Tạo con trỏ

29.

Lệnh nào dùng để xóa UDF?

a)

DROP FUNCTION dbo.function_name

b)

DELETE FUNCTION dbo.function_name

c)

REMOVE FUNCTION dbo.function_name

d)

CLOSE FUNCTION dbo.function_name

30.

Cách nào giúp bảo toàn quyền truy cập khi chỉnh sửa UDF?

a)

Sử dụng DROP và CREATE thay vì ALTER

b)

Sử dụng ALTER thay vì DROP và CREATE

c)

Thêm WITH ENCRYPTION

d)

Kiểm tra @@FETCH_STATUS