Mục tiêu là thay đổi chuỗi truy vấn trong một thủ tục được lưu trữ Mysql dựa trên các biến đầu vào.Mysql tự động tạo chuỗi truy vấn trong một thủ tục được lưu trữ dựa trên logic
Something như thế này:
CREATE DEFINER=`root`@`localhost` PROCEDURE `func`(type VARCHAR(15))
BEGIN
SET @type = type;
-- Check for the sort parameter
if @type="asc" THEN
SET @sort = " order by name asc";
elseif @type="desc" THEN
SET @sort = " order by name desc";
else
SET @sort ="";
end if;
SELECT id, name from table @sort;
END
Các giải pháp là sử dụng thực thi, và concat: CREATE DEFINER = 'root' @ 'localhost' PROCEDURE' test' (nhập VARCHAR (15)) BEGIN SET @input = input; nếu @ input = "asc" sau đó SET @sort = "order by ActivityLogKey asc"; elseif @input = "desc" rồi SET @sort = "order by ActivityLogKey desc"; else SET @sort = ""; kết thúc nếu; SET @query = CONCAT ('chọn * từ activitylog', @ sort, 'limit 0, 5'); NGAY LẬP TRƯỚC TỪ @query; EXECUTE stmt; DEPOCATE PREPARE stmt; END –
Nếu đây là giải pháp tại sao bạn không thêm nó làm câu trả lời và chấp nhận câu trả lời hoặc chỉnh sửa câu hỏi của bạn. –
Nếu không có 100 danh tiếng, tôi phải chờ 8 giờ để trả lời câu hỏi của riêng tôi –