2012-04-03 21 views
6

Przepuszczam nazwę pola tabeli jako parametr procedury składowanej, ale procedura składowana przyjmuje nazwę pola jako wartość zamiast nazwy pola i podaje błąd.Przekazywanie nazwy pola jako parametru w przechowywanej procedurze MySQL

np. Jeśli przekazać wartość isEnabled za pośrednictwem parametru FieldName, Mysql zgłasza błąd nieznanej kolumny 'isEnabled' na liście pól, która pokazuje, że mysql automatycznie dodaje cytat.

Oto przykładowa procedura przechowywana, którą napisałem.

Czy istnieje sposób, aby poprawnie poprawnie przekazać nazwę pola dynamicznie.

Odpowiedz

7

Można użyć prepared statements, na przykład -

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

Dzięki, jego pracy oraz wartości parametrów podczas przechodzenia z roztworu. – irfanmcsd

Powiązane problemy