Ví dụ tập lệnh mysql pl/sql

Gỡ lỗi là một trong những phần quan trọng nhưng khó khăn nhất của bất kỳ quy trình phần mềm nào. Để tìm một số lỗi, bạn phải chạy mã từng bước để xem phần nào của mã gây ra lỗi. Điều này được gọi là gỡ lỗi thời gian chạy

May mắn thay, SQL Server Management Studio (SSMS) đi kèm với khả năng gỡ lỗi tự động để giúp các nhà phát triển gỡ lỗi tập lệnh của họ. Trong bài viết này, chúng tôi sẽ giải thích thực tế cách SSMS có thể được sử dụng để gỡ lỗi các thủ tục được lưu trữ trong SQL Server bằng cách làm việc thông qua một ví dụ rất đơn giản

Thí dụ

Ví dụ của chúng tôi, chúng tôi sẽ sử dụng một thủ tục được lưu trữ “spShowOddNumbers” lấy hai số làm tham số của nó và in tất cả các số lẻ giữa hai số được chỉ định đó

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

TẠO THỦ TỤC spShowOddNumbers

@LowerRange INT,

@Phạm vi trên INT

BẰNG

BẮT ĐẦU

  WHILE(@Phạm vi thấp hơn < @UpperRange)

  BẮT ĐẦU

    if(@LowerRange%2 != 0)

    BẮT ĐẦU

      IN @LowerRange

    END

    SET @LowerRange = @LowerRange + 1

  END

  IN 'IN CÁC SỐ LẺ GIỮA ' + RTRIM(@lowerRange) + ' and ' + RTRIM(@UpperRange)

KẾT THÚC

Tập lệnh gọi thủ tục được lưu trữ trong SQL Server

1

2

3

4

5

6

7

8

9

KHAI BÁO @tầm thấp INT

SET @tầm thấp = 5

 

KHAI BÁO @dãy trên INT

SET @dãy trên = 20

 

EXEC spShowOddNumbers @lowerrange, @upperrange

 

DROP PROC spShowOddNumbers

tùy chọn gỡ lỗi

Trong SQL Server Management Studio, bạn có nhiều tùy chọn gỡ lỗi

bắt đầu gỡ lỗi

Để bắt đầu gỡ lỗi thủ tục được lưu trữ trên máy chủ SQL trong SQL Server, hãy nhấn ALT + F5 hoặc vào Gỡ lỗi -> Bắt đầu gỡ lỗi, như minh họa trong hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Sau khi khởi động trình gỡ lỗi trong cửa sổ mà bạn đang gọi thủ tục lưu trữ của mình trong SQL Server, bạn sẽ thấy rằng sẽ có một con trỏ màu vàng ở đầu cửa sổ truy vấn như minh họa bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Bây giờ bạn đã bắt đầu gỡ lỗi, bạn có thể xem qua mã

Bước qua kịch bản

Có ba tùy chọn để bước qua mã. 1) Bước qua, 2) Bước vào và 3) Bước ra. Bạn có thể thấy các tùy chọn này bằng cách nhấp vào Gỡ lỗi như trong ảnh chụp màn hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

  1. Bước qua (F 10)

    Step Over chỉ cần di chuyển con trỏ đến dòng tiếp theo của tập lệnh thực thi. Chẳng hạn, nếu trình gỡ lỗi ở vị trí sau trong tập lệnh

    Ví dụ tập lệnh mysql pl/sql
    Ví dụ tập lệnh mysql pl/sql

    Nhấp vào Bước qua hoặc nhấn F10 chỉ cần di chuyển con trỏ đến dòng sau

    Ví dụ tập lệnh mysql pl/sql
    Ví dụ tập lệnh mysql pl/sql

  2. Bước Vào (F 11)

    Đây là một trong những tính năng sửa lỗi quan trọng và hữu ích nhất. Bước vào cho phép bạn đột nhập vào tập lệnh thủ tục được lưu trữ từ tập lệnh gọi thủ tục được lưu trữ đó

    Điều quan trọng cần đề cập là Step Into hoạt động giống như Step Over. Nếu dòng tập lệnh đang được thực thi không chứa bất kỳ lời gọi nào đến thủ tục được lưu trữ trong SQL Server

    Ví dụ: nếu bạn Bước vào tại

    1

    SET @dãy trên = 20

    Trình gỡ lỗi sẽ chỉ cần di chuyển điều khiển sang dòng tiếp theo

    1

    EXEC spShowOddNumbers @lowerrange, @upperrange

    Dòng trên chứa lệnh gọi thủ tục lưu sẵn trong SQL Server. Bây giờ nếu bạn Bước vào dòng tập lệnh này, trình gỡ lỗi sẽ đưa bạn đến tập lệnh của thủ tục được lưu trữ ‘spShowOddNumbers’ như minh họa trong hình sau

    Ví dụ tập lệnh mysql pl/sql
    Ví dụ tập lệnh mysql pl/sql

  3. Bước ra ngoài (Shift + F11)

    Step Out đối lập với Step Into. Nếu bạn đang ở trong một thủ tục được lưu trữ trong SQL Server và bạn muốn quay lại tập lệnh gọi thủ tục được lưu trữ, bạn có thể sử dụng Step Out. Chẳng hạn, nếu bạn nhấp vào Step Over tại

    1

    WHILE(@LowerRange &lt; @UpperRange)

    Trình gỡ lỗi sẽ đưa bạn trở lại tập lệnh gọi hàm i. e

    Ví dụ tập lệnh mysql pl/sql
    Ví dụ tập lệnh mysql pl/sql

Chạy đến con trỏ

Các tùy chọn gỡ lỗi thực hiện từng dòng một. Nếu có một vòng lặp hoặc một đoạn mã dài mà bạn muốn trình gỡ lỗi của mình bỏ qua, bạn có thể sử dụng tùy chọn ‘Run To Cursor’

1

WHILE(@LowerRange < @UpperRange)

Chẳng hạn, nếu con trỏ ở dòng sau của thủ tục được lưu trữ trong SQL Server và bạn muốn bỏ qua vòng lặp và chuyển đến câu lệnh in sau vòng lặp. Bạn có thể chỉ cần truy cập câu lệnh in và nhấp vào “Run To Cursor” như hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Vòng lặp sẽ bị bỏ qua và con trỏ của bạn sẽ trỏ vào câu lệnh in

Cửa sổ cục bộ

Cửa sổ cục bộ giúp bạn theo dõi giá trị của các biến trong tập lệnh. Trong ví dụ này, chúng tôi có hai biến @LowerRange và @UpperRange trong tập lệnh của mình. Khi bắt đầu vòng lặp while trong thủ tục được lưu trữ trong SQL Server, giá trị của biến @LowerRange là 5 trong khi biến @UpperRange là 20 như trong hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Khi bạn thực hiện vòng lặp và sau đó kiểm tra giá trị của các biến, bạn sẽ thấy rằng các biến @LowerRange và @UpperRange đều sẽ hiển thị 20 làm giá trị của chúng. Cửa sổ Địa phương hiển thị Tên, Giá trị và Loại của biến. Việc sử dụng cửa sổ Địa phương giúp bạn có thể theo dõi các thay đổi về giá trị của các biến khi bạn tiến hành qua tập lệnh rất đơn giản

Nếu bạn vô tình đóng cửa sổ Locals và muốn khôi phục lại, bạn chỉ cần vào Debug -> Windows -> Locals như hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Cửa sổ đồng hồ

Cửa sổ Watch rất giống với cửa sổ Locals. Sự khác biệt duy nhất là bạn có thể thêm hoặc xóa các biến khỏi cửa sổ Xem, điều này có thể hữu ích khi làm việc với số lượng lớn các biến trong các tập lệnh lớn hơn

Để thêm một biến vào cửa sổ Xem, chỉ cần chọn biến đó, nhấp chuột phải rồi chọn “Thêm Đồng hồ” như minh họa trong ảnh chụp màn hình sau

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Tương tự, để xóa một biến, nhấp chuột phải vào tên của biến đó trong cửa sổ Xem và nhấp vào “Xóa Xem” từ danh sách tùy chọn. Như hình dưới đây

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

ngăn xếp cuộc gọi

Ngăn xếp cuộc gọi, như tên gợi ý, hiển thị ngăn xếp các cuộc gọi đã được thực hiện cho đến thời điểm hiện tại

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Dòng đầu tiên của Call Stack trong hình trên, cho chúng ta biết rằng hiện thủ tục lưu sẵn spShowOddNumbers đang được thực thi và tại thời điểm trình gỡ lỗi đang ở dòng 14 của tệp chứa thủ tục lưu sẵn này. Dòng thứ hai chỉ ra rằng thủ tục được lưu trữ này được gọi từ tập lệnh ở Dòng 7 của SQLQuery2. tập tin sql

Cửa sổ ngay lập tức

Cửa sổ Immediate tương tự như cửa sổ giao diện điều khiển. Ví dụ: bạn có thể thực hiện các phép toán trong cửa sổ Ngay lập tức, kiểm tra giá trị của các biến, v.v. Ảnh chụp màn hình sau đây chứa một ví dụ về cửa sổ ngay lập tức

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Ghi chú. lệnh cls xóa cửa sổ ngay lập tức

Điểm dừng

Điểm dừng là một trong những công cụ sửa lỗi được sử dụng phổ biến nhất trong bất kỳ ngôn ngữ lập trình nào. Điểm dừng cho phép bạn chỉ định vị trí mà bạn muốn trình gỡ lỗi của mình ngừng thực thi mã. Chúng đặc biệt hữu ích khi bạn không muốn gỡ lỗi tất cả các dòng mã, thay vào đó bạn muốn kiểm tra trạng thái của các biến tại các vị trí cụ thể trong mã của mình

Để đặt điểm dừng trong mã của bạn, chỉ cần nhấp chuột phải vào vùng màu xám ở bên trái của dòng tập lệnh nơi bạn muốn đặt điểm dừng của mình. Ngoài ra, nhấn F9 sẽ tự động thêm điểm dừng vào dòng. Nhấn lại phím F9 sẽ xóa điểm ngắt

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Bạn có thể thấy trong hình trên, một điểm ngắt đã được thêm vào dòng thực thi thủ tục lưu sẵn “spShowOddNumbers” trong SQL Server. Bây giờ, gỡ lỗi tập lệnh này. Bạn sẽ thấy rằng trình gỡ lỗi sẽ bắt đầu ở dòng đầu tiên của tập lệnh

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Bây giờ nhấn ALT + F5 hoặc quay lại menu gỡ lỗi và nhấp vào Gỡ lỗi -> Tiếp tục. Bạn sẽ thấy rằng thay vì gỡ lỗi dòng tiếp theo, trình gỡ lỗi sẽ chuyển thẳng đến dòng gần nhất có điểm dừng

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Bạn cũng có thể tạo các điểm dừng có điều kiện. Điểm dừng có điều kiện chỉ được nhấn khi các điều kiện được chỉ định được đáp ứng

Để chỉ định một điều kiện trên điểm ngắt, chỉ cần nhấp chuột phải vào điểm dừng và chọn “Điều kiện” như trong hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Một cửa sổ mới sẽ được mở ra nơi bạn có thể chỉ định các điều kiện cần thỏa mãn trước khi điểm ngắt có thể xảy ra. Nếu bạn muốn điểm dừng này chỉ bị tấn công khi @LowerRange lớn hơn 15, bạn có thể thêm điểm này làm điều kiện, như trong hình bên dưới

Ví dụ tập lệnh mysql pl/sql
Ví dụ tập lệnh mysql pl/sql

Phần kết luận

Trong bài viết này, chúng tôi đã thảo luận về những tùy chọn khác nhau mà Microsoft SQL Server Management Studio cung cấp để gỡ lỗi tập lệnh hoặc thủ tục được lưu trữ trong SQL Server