MySQL存储过程中的语法错误
下面的SP没有给出任何结果,即使根据where子句有48行MySQL存储过程中的语法错误,mysql,stored-procedures,Mysql,Stored Procedures,下面的SP没有给出任何结果,即使根据where子句有48行 BEGIN DECLARE SelectClause VARCHAR(2000); if v_mode='SearchByString' then SET SelectClause ='select SURVEY_USER.username,SURVEY.* from SURVEY, SURVEY_USER'; if v_SearchString is not null then SET SelectClause=
BEGIN
DECLARE SelectClause VARCHAR(2000);
if v_mode='SearchByString' then
SET SelectClause ='select SURVEY_USER.username,SURVEY.* from SURVEY, SURVEY_USER';
if v_SearchString is not null then
SET SelectClause=CONCAT(@SelectClause,' where ');
Set SelectClause=CONCAT(@SelectClause,v_SearchString);
end if;
SET SelectClause=CONCAT(@SelectClause,' order by SURVEY.created_date DESC;') ;
select SelectClause;
SET @query = SelectClause;
PREPARE stmt FROM @query;
EXECUTE stmt;
select stmt;
end if;
END
我试了很多,但没有遇到任何问题。我还尝试了select子句在不同的位置打印命令,使其无法打印。
请给我一些解决办法。
这是我正在传递的参数
v_模式='SearhByString'
v\u SearchString='SURVEY\u USER.username=chiragfanse'
它应该返回48行,但不返回任何内容。您有错误的concat函数。试试这个
if v_mode='SearchString' then
DECLARE @SelectClause varchar(2000);
SET @SelectClause =CONCAT(select (SURVEY_USER.username,SURVEY.*) from SURVEY, 'SURVEY_USER');
if SearchString is not null then
@SelectClause=CONCAT(@SelectClause, 'where' ,SearchString);
end if;
SET @SelectClause=@SelectClause
order by SURVEY.created_date DESC
execute(@SelectClause)
end if;
试试这个。如果你还需要什么,请告诉我
BEGIN
DECLARE SelectClause VARCHAR(2000);
IF v_mode = 'SearchString' THEN
SET SelectClause = CONCAT('select SURVEY_USER.username,SURVEY.* from SURVEY, SURVEY_USER');
IF SearchString IS NOT NULL THEN
SET SelectClause = CONCAT(SelectClause, ' where ', SearchString);
END IF;
SET SelectClause = CONCAT(SelectClause, ' order by SURVEY.created_date DESC;');
SET @query = SelectClause;
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END
包含错误消息可能会有帮助。@Devart。我编写的代码与您提供的相同,但它显示了DECLARE SelectClause VARCHAR(2000)附近的错误。我对这段代码没有问题。请显示完整的过程(创建过程…)。注意,SelectClause和@SelectClause是不同的变量;看看我的代码。先把它修好。关于上一个错误检查查询,请尝试使用SELECT语句输出它