2012-04-03 33 views
6

Tôi chuyển tên trường bảng làm tham số cho thủ tục lưu sẵn nhưng thủ tục được lưu giữ lấy tên trường làm giá trị thay cho tên trường và lỗi ném.Truyền tên trường dưới dạng tham số trong thủ tục lưu trữ MySQL

ví dụ: nếu giá trị i vượt qua được kích hoạt thông qua tham số FieldName, Mysql ném lỗi cột không xác định 'isEnabled' trong danh sách trường, hiển thị mysql tự động thêm trích dẫn.

Đây là thủ tục được lưu trữ mẫu tôi đã viết.

CREATE `VSK_Comments_UpdateAction`(IN FieldName varchar(30),IN FieldValue tinyint,CID bigint) 
BEGIN 
Update comments Set FieldName=FieldValue WHERE commentid=CID; 
END; 

Có cách nào để tôi có thể truyền tên trường đúng cách đúng cách.

Trả lời

7

Bạn có thể sử dụng prepared statements, ví dụ -

CREATE `VSK_Comments_UpdateAction`(IN FieldName varchar(30),IN FieldValue tinyint,CID bigint) 
BEGIN 
    SET @query = CONCAT('Update comments Set ', FieldName, '=? WHERE commentid=?'); 
    PREPARE stmt FROM @query; 
    SET @FieldValue = FieldValue; 
    SET @CID = CID; 
    EXECUTE stmt USING @FieldValue, @CID; 
    DEALLOCATE PREPARE stmt; 
END; 
+0

Cảm ơn, làm việc của mình cũng trong khi đi qua các giá trị tham số từ giải pháp. – irfanmcsd

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