我有一个存储过程,其中有if
语句,其中foto_id
是integer
且datums
属于date
类型:
if((select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv
where pv.Fotografs=foto_id and pv.Datums=datums)as tab) = 0) then
select 3;
else
select -2;
当我在程序之外用完全相同的值测试它时,就像调用这样的程序:
select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv
where pv.Fotografs='9' and pv.Datums='2016-01-01')as tab;
我得到了所需的结果,但是在内部过程中if
语句返回true
,即使此select
语句返回行计数。
我很高兴能指出我做错了什么......
P.S。这些信息是否足够,还是需要提供完整的程序和表信息?
答案 0 :(得分:0)
首先,这是if语句在mySql中的显示方式:
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
如果你这样写,一切都应该是好的。此外,你可以随时使用CASE WHEN,它会是这样的:
SELECT CASE WHEN
((select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv where pv.Fotografs=foto_id and pv.Datums=datums)as tab) = 0)
THEN 3
ELSE -2
END;