带有动态列名的存储过程

时间:2015-04-09 14:02:09

标签: mysql stored-procedures

我正在使用动态字段名称创建存储过程。假设我有一个用户表,他们的b'days N周年纪念日,加入日期。我希望在动态的基础上选择记录和计数。我在SP中使用了params来选择列。

CREATE DEFINER=`root`@`%` PROCEDURE `GetAllRecords`(IN recordType VARCHAR(255))
BEGIN DECLARE fieldName VARCHAR(100) DEFAULT '';

   CASE recordType
 WHEN  'J_Anniversary' THEN
    SET fieldName = 'fld_dob';
 WHEN 'Anniversary' THEN
    SET fieldName = 'fld_anniversary';
WHEN 'Birthday' THEN
    SET fieldName = 'fld_dob';
 ELSE
    SET fieldName = 'fld_dob';
 END CASE;

SELECT fld_id, fld_title, fld_name, fld_dob, fld_date_joinning, fld_status, fld_anniversary
FROM `tbl_user_details`
WHERE MONTH(fieldName) = MONTH(CURDATE()) AND DATE_ADD(fieldName, INTERVAL YEAR(CURDATE())- YEAR(fieldName) YEAR) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 31 DAY)
ORDER BY fieldName ASC; END

我称之为CALL('Birthday');。但是它产生的空结果会带有警告。我无法追踪警告。 Phpmyadmin没有显示警告。

如果我用静态列名称调用它,则为B'day提取2条记录。我的SP在哪里错了?

0 个答案:

没有答案