首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql过程不适用于搜索表中的2列值?

mysql过程不适用于搜索表中的2列值?
EN

Stack Overflow用户
提问于 2013-08-31 07:28:58
回答 2查看 42关注 0票数 0

我写了这样的查询:

代码语言:javascript
复制
select * from c_course where c_course.cdesc LIKE CONCAT('%',"science",'%')
OR  c_course.cname LIKE CONCAT('%',"science",'%');
cid     cname      cdesc      sdate         edate
'301', 'physics', 'science', '2013-01-03', '2013-01-06'
'303', 'chemistry', 'science', '2013-01-09', '2013-01-09'
'501', 'science', 'natural science', '2013-01-31', '2013-01-09'

它运转正常。同样,我也使用过这样的存储过程编写:

代码语言:javascript
复制
use lportal;
delimiter //
create procedure pro_search143(IN sname varchar(20))
begin

SET @c = CONCAT('"',sname,'"');

select * from c_course where 

c_course.cdesc LIKE CONCAT('%',c,'%')
OR 
c_course.cname LIKE CONCAT('%',c,'%');

end
//

它正在执行,但在调用过程时,它显示了如下错误:

调用pro_search143("science");c中的未知列where子句。

有人能修改我的代码并给出解决方案吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-08-31 07:31:03

可能是:

代码语言:javascript
复制
 use lportal;
 delimiter //
 create procedure pro_search143(IN sname varchar(20))
 begin

 SET @query = concat('select * 
                      from c_course 
                      where c_course.cdesc LIKE CONCAT(''%'',''',sname,''',''%'') 
                         OR c_course.cname LIKE CONCAT(''%'',''',sname,''',''%'');
                     ');

 PREPARE stmt FROM @query;
 EXECUTE stmt;

 end //

with:call pro_search143("science")

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18545715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档