【发布时间】:2015-09-08 07:58:22
【问题描述】:
这是我的存储过程查询。在这里,如果 typee 存在,则应添加第二个条件,否则不应添加。 我的表结构是这样的
|id | name | typee |is_primary|
|1 |IND |0 |1 |
|2 |SRIL |1 |0 |
我的存储过程查询如下
CREATE DEFINER=`root`@`localhost` PROCEDURE `testIfCondition`(IN countryId int(11),IN typee INT(11),IN is_primary INT(11),
out name VARCHAR(50))
BEGIN
select name from country where id = id
if typee != 0 then
and typee= typee
end if;
if is_primary !=0 then
and primary = primary
end if;
END
在上面的查询中,有值的必须得到执行。如果有人知道,请帮助我。当我尝试时,它给出了一些语法错误。请告诉我正确的语法来解决我的问题。
提前谢谢!!!!
【问题讨论】:
-
typee和trypes是什么?他们来自哪里?你是什么意思“如果它存在”?你是什么意思“它应该添加第二个条件”?这个sproc到底应该做什么?投票结束是我读过的最不明确的问题之一。 -
希望你现在清楚了!
-
通过将
trypes更改为另一个typee,所以现在您正在将其与自身进行比较?不,我不能说这让它变得更加清楚根本。如果有的话,现在就更不清楚了——我没想到的事情是可能的。尝试回答我在之前评论中提出的问题:这可能会有所帮助。 -
有时 typee 可能为空。因此,如果它以 null 形式出现,则应以 where id = id.. 结尾。如果 typee 不为 null,则必须添加另一个条件和 typee = typee
-
select * from country where id = id and typee = typee 这里 id 和 typee 是动态的。调用存储过程时会出现一些值