我的MYSQL存储过程中有大量准备好的语句。语句有可能变为NULL(动态生成的SQL语句),因此为了避免运行时异常,我总是使用以下方法。但是因为我经常使用预备语句,所以在每个看起来很吵的地方都会检查NULL。
SET @s10=CONCAT('UPDATE tlist SET total_count=total_count-1 WHERE group_id =',in_location_id,' AND sub_type=',COMPANY_COUNT,' AND sub_id in (',var_companies,')' );
IF(@s10 is NOT NULL) THEN
PREPARE stmt FROM @s10;
EXECUTE stmt;
END IF;
那么我可以遵循任何其他方法将上面的代码分成一行或两行吗? (制作声明并将它们一起执行,并在一个步骤中一起处理Null?)
我知道我可以运行小子程序并将准备好的语句传递给它并进行上述检查,但是想知道是否有任何内置的MYSQL功能。
谢谢
答案 0 :(得分:0)
试
SET @s10=CONCAT('UPDATE tlist SET total_count=total_count-1 WHERE group_id =',in_location_id,'
AND sub_type=',COMPANY_COUNT,' AND sub_id in (',var_companies,')' );
IF(!ISNULL(@s10) && LENGTH(trim(@s10)) > 0) THEN
PREPARE stmt FROM @s10;
EXECUTE stmt;
END IF;