DELIMITER $$
CREATE
PROCEDURE `selectCollectdata`(IN ctype VARCHAr(50),IN score INT,IN pageNum INT,IN pageSize INT,IN orders VARCHAr(5),IN title VARCHAr(255),
IN content VARCHAr(200)IN ,keyWords VARCHAr(200),IN startTime VARCHAr(20),IN endTime VARCHAr(20),IN taskId VARCHAr(30))
BEGIN
DECLARE @sql VARCHAr(MAX);
SET @sql= 'select c.id cid,c.score,c.publishDate,c.author,c.title,c.content,c.source,c.url,c.source,c.click,c.zanTotal,
c.repeatTotal,c.forward,c.type,t.key_words,t.id tId
from t_collectdata c
LEFT JOIN t_data_subject d on d.id=c.id
LEFT JOIN t_task t on d.subjectId=t.id where 1=1 '
BEGIN
IF(ctype IS NOT NULL)
SET @sql =@sql + 'and c.type='TYPE' '
IF(startTime IS NOT NULL)
SET @sql =@sql + 'and c.publishDate between 'endTime' and 'startTime' '
IF(taskId IS NOT NULL)
SET @sql =@sql + 'and t.id in(taskId)'
IF(keyWords IS NOT NULL)
SET @sql =@sql + 'and (c.title like ''%'+title+'%'' union all c.content like ''%'+content+'%'')'
IF(title IS NOT NULL)
SET @sql =@sql + 'and c.title like ''%'+title+'%'''
IF(content IS NOT NULL)
SET @sql =@sql + 'and c.content like ''%'+content+'%'''
IF(score ==1)
SET @sql =@sql +'and 0.55
SET @sql =@sql +'and 0.45<=c.score<=0.55'
IF(score ==-1)
SET @sql =@sql +'and 0<=c.score<0.45'
IF(orders IS NOT NULL)
SET @sql =@sql +'c.publishDate order by 'orders''
IF(pageSize>0)
SET @sql =@sql +'limit 'pageNum','pageSize''
END IF;
exec(@sql)
END $$`
DELIMITER ;
系统提示时运行报错,求大腿帮忙。看下是不是存储过程就写错了,还是说动态的多条件查询拼接不能这样写。