MYSQL-Prepared语句空处理
我在MYSQL存储过程中准备了大量语句。语句可能会变为NULL(动态生成的SQL语句),因此为了避免运行时异常,我总是使用下面的方法。但是因为我经常使用预先准备好的语句,所以在每个地方都进行空检查看起来很麻烦MYSQL-Prepared语句空处理,mysql,prepared-statement,Mysql,Prepared Statement,我在MYSQL存储过程中准备了大量语句。语句可能会变为NULL(动态生成的SQL语句),因此为了避免运行时异常,我总是使用下面的方法。但是因为我经常使用预先准备好的语句,所以在每个地方都进行空检查看起来很麻烦 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 (
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;
那么,有没有其他方法可以让我将上述代码模拟成一行或两行呢?
(一步完成语句并一起执行,一步完成空处理?)
我知道我可以运行小的子例程并将准备好的语句传递给它,然后执行上面的检查,但我想知道是否有任何内置的MYSQL功能
谢谢试试看
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;
谢谢你的回复。事实上,我想缩短上面的代码行。再次感谢