Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-Prepared语句空处理_Mysql_Prepared Statement - Fatal编程技术网

MYSQL-Prepared语句空处理

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 (

我在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 (',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;

谢谢你的回复。事实上,我想缩短上面的代码行。再次感谢