0

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; 

上記のコードを1行または2行に最小化するために私が従うことができる他のアプローチはありますか? (ステートメントを作成して一緒に実行し、1 つのステップで一緒に Null を処理しますか?)

小さなサブルーチンを実行し、準備されたステートメントをそれに渡し、上記のチェックを実行できることは知っていますが、組み込みの MYSQL 機能があるかどうかを知りたいです。

ありがとうございました

4

1 に答える 1

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;
于 2013-10-11T11:01:26.267 に答える