2017-07-13 17 views
5

Thực hiện một số thao tác bảo trì trên báo cáo cũ được tạo bởi người nào đó từ lâu. Tôi nhận thấy nguồn dữ liệu cho báo cáo là một thủ tục được lưu trữ. Cuộc gọi sproc giống như sau:"; 1" sau khi gọi thủ tục lưu sẵn trong MS SQL?

EXEC someStoredProc;1 

Tôi chưa từng thấy "; 1" trước đây. Chỉ cần tò mò những gì nó là heck? Không thể tìm thấy bất kỳ tài liệu nào trực tuyến. Nếu tôi chuyển "1" sang bất kỳ số nào khác, SQL sẽ ném lỗi "không thể tìm thấy thủ tục được lưu trữ 'someStoredProc'". Nhưng chuyển nó trở lại "1" và nó hoạt động. Dường như không có bất kỳ tác động nào đến đầu ra. Cái gì thế này?

Tôi nhận thấy tôi có thể đặt "; 1" sau bất kỳ quy trình được lưu trữ nào và thực thi dường như giống như không có nó.

Nếu có ai có thể làm sáng tỏ bí ẩn này đối với tôi - cảm ơn bạn!

Trả lời

5

Chúng được gọi là Numbered Procedures, đã được deprecated since 2005 (nhưng vẫn còn hơi hỗ trợ thông qua SQL Server 2012)

Trong SQL Server, bạn có thể tạo các phiên bản khác nhau của thủ tục lưu trữ với một hậu tố ;#. Chúng thường có thể được sử dụng để quá tải một thủ tục được lưu trữ, bằng cách tạo một phiên bản khác chấp nhận một số thông số khác hoặc hoạt động khác nhau, v.v.

Các vấn đề liên quan