Nếu bạn muốn sử dụng câu lệnh SQL bằng mã định danh, thì bạn cần sử dụng câu lệnh đã chuẩn bị sẵn; nhưng các câu lệnh chuẩn bị sẵn không thể được sử dụng trong các hàm. Vì vậy, bạn có thể tạo một thủ tục được lưu trữ với tham số OUT -
CREATE PROCEDURE getName
(IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN
SET @GetName =
CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE id=', myId);
PREPARE stmt FROM @GetName;
EXECUTE stmt;
SET myName = @var1;
END
Sử dụng ví dụ -
SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;