2012-03-08 4 views
0

으로 매개 변수를 내릴 수 없습니다. 나는 테이블 "TABLE_NAME는"존재 does't 것을 오류가커스텀 mysql 함수 - 제목을 쓰면

SELECT GetCreateValue('table1', 'ID', 'name', '123456'); 

뭔가를 실행할 때 여기에 기능을

DELIMITER // 
CREATE FUNCTION GetCreateValue(table_name CHAR(64), id_field CHAR(64), name_field CHAR(64), name_value CHAR(64)) 
RETURNS INTEGER 
BEGIN 
    DECLARE ret INTEGER; 
    SELECT count(*) INTO ret FROM table_name WHERE name_field = name_value; 
    IF ret < 1 THEN 
     INSERT INTO table_name SET name_field = name_value; 
     SELECT id_field INTO ret FROM table_name WHERE name_field = name_value; 
    ELSE  
     SELECT id_field INTO ret FROM table_name WHERE name_field = name_value; 
    END IF; 
    RETURN ret; 
END// 
DELIMITER ; 

을합니다. 분명히 매개 변수가 전달되지 않았습니다. 왜?

+0

분명히 매개 변수 **가 전달되었지만 ** 테이블 이름이므로 사용할 수없는'CHAR '입니다. – vulkanino

답변

0
SET @qry = 
    CONCAT(
    'SELECT count(*) INTO ret FROM ', table_name, 
     ' WHERE ', name_field, 
     ' = ?'); 

PREPARE stmt1 FROM @qry; 
SET @v = name_value; 
EXECUTE stmt1 USING @v; 
DEALLOCATE PREPARE stmt1;