Câu trả lời:
Ad hoc là tiếng Latin cho "cho mục đích này". Bạn có thể gọi nó là truy vấn "đang hoạt động" hoặc truy vấn "chỉ như vậy". Đây là loại truy vấn SQL mà bạn chỉ cần gõ một cách lỏng lẻo ở nơi bạn cần nó
var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;
... Đó là một truy vấn hoàn toàn khác nhau mỗi khi dòng mã được thực thi, tùy thuộc vào giá trị của myId
. Đối diện của một truy vấn ad hoc là một truy vấn được xác định trước, chẳng hạn như Thủ tục lưu trữ, trong đó bạn đã tạo một truy vấn duy nhất cho toàn bộ mục đích tổng quát là chọn từ bảng đó (giả sử) và chuyển ID dưới dạng một biến.
Truy vấn Ad-Hoc là một truy vấn không thể được xác định trước thời điểm truy vấn được đưa ra. Nó được tạo ra để lấy thông tin khi có nhu cầu và nó bao gồm SQL được xây dựng động thường được xây dựng bởi các công cụ truy vấn thường trú trên máy tính để bàn.
Kiểm tra: http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html
Cũng muốn thêm rằng truy vấn ad hoc dễ bị tấn công SQL SQL. Chúng ta nên cố gắng tránh sử dụng nó và sử dụng các SQL được tham số hóa thay thế ( như PreparedStatement trong Java ).
Truy vấn Ad-Hoc là một truy vấn không thể được xác định trước thời điểm truy vấn được đưa ra. Nó được tạo ra để lấy thông tin khi có nhu cầu và nó bao gồm SQL được xây dựng động thường được xây dựng bởi các công cụ truy vấn thường trú trên máy tính để bàn. Một truy vấn ad hoc không nằm trong máy tính hoặc trình quản lý cơ sở dữ liệu nhưng được tạo động tùy thuộc vào nhu cầu của người dùng dữ liệu.
Trong SQL, một truy vấn ad hoc là một lệnh / truy vấn được gõ lỏng lẻo mà giá trị của nó phụ thuộc vào một số biến. Mỗi lần lệnh được thực thi, kết quả sẽ khác nhau, tùy thuộc vào giá trị của biến. Nó không thể được xác định trước và thường xuất hiện dưới truy vấn SQL lập trình động. Một truy vấn ad hoc tồn tại trong thời gian ngắn và được tạo ra trong thời gian chạy.
Một truy vấn đặc biệt là một truy vấn được tạo để cung cấp một bản ghi cụ thể từ bất kỳ hoặc nhiều bảng được hợp nhất có sẵn trên máy chủ DB. Các truy vấn này thường phục vụ một mục đích sử dụng một lần và có thể không cần thiết phải kết hợp vào bất kỳ thủ tục được lưu trữ nào để chạy lại trong tương lai.
Kịch bản đặc biệt : Bạn nhận được yêu cầu cho một tập hợp con dữ liệu cụ thể với một bộ biến duy nhất. Nếu không có truy vấn được viết sẵn có thể cung cấp các kết quả cần thiết, bạn phải viết một truy vấn đặc biệt để tạo kết quả recordset.
Ngoài một lần sử dụng Truy vấn đặc biệt là các thủ tục được lưu trữ ; tức là các truy vấn được lưu trữ trong công cụ giao diện DB. Các thủ tục được lưu trữ này sau đó có thể được thực hiện theo trình tự trong một mô-đun hoặc macro để hoàn thành một nhiệm vụ được xác định trước theo yêu cầu, theo lịch hoặc được kích hoạt bởi một sự kiện khác.
Kịch bản thủ tục được lưu trữ : Mỗi tháng bạn cần tạo một báo cáo từ cùng một tập hợp các bảng và có cùng các biến (các biến này có thể là các giá trị được xác định trước cụ thể, các giá trị được tính toán như đầu cuối của tháng hiện tại hay giá trị đầu vào của người dùng). Bạn sẽ tạo thủ tục như một truy vấn đặc biệt lần đầu tiên. Sau khi kiểm tra kết quả để đảm bảo độ chính xác, bạn có thể chọn triển khai truy vấn này. Sau đó, bạn sẽ lưu trữ truy vấn hoặc chuỗi truy vấn trong mô-đun hoặc macro để chạy lại khi cần.
Các truy vấn đặc biệt là những truy vấn chưa được xác định không cần thiết trên cơ sở thường xuyên, do đó chúng không được bao gồm trong bộ báo cáo hoặc truy vấn thông thường
Một truy vấn Ad-Hoc là:
Truy vấn ad hoc là loại định nghĩa máy tính. Điều đó có nghĩa là truy vấn này được thiết kế đặc biệt để có được bất kỳ thông tin nào khi chỉ cần thiết. Được xác định trước. tham khảo https://www.youtube.com/watch?v=0c8JEKmVXhU này
Trong Sql Server, "Ad Hoc Query" cũng được sử dụng cho Truy vấn phân phối Ad Hoc. Đây là những truy vấn đặc biệt trên một máy chủ khác thông qua OpenRowset hoặc OpenDatasource. Truy vấn phân phối Ad Hoc chỉ được phép sau khi định cấu hình như vậy. Đây là một tùy chọn cấu hình máy chủ.
SQL injection attacks
... Bạn phải sử dụng tham số.