3

エラーハンドラはプロシージャの外で宣言できますか?

DECLARE EXIT HANDLER FOR NOT FOUND ROLLBACK;
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;

START TRANSACTION;

INSERT INTO ad_type VALUES (3, 'test');

INSERT INTO ad_type_languages VALUES (3, 'TEST', 'en' , 'yes');

COMMIT;

このコードを実行しようとすると、エラーが発生します。

1 行目の ERROR 1064 (42000): SQL 構文にエラーがあります。3 行目の 'DECLARE EXIT HANDLER FOR NOT FOUND ROLLBACK' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

プロシージャで実行すると問題なく実行されますが、ストアドプロシージャのないスクリプトでこれが必要です。

前もって感謝します。

ps

この 3 つのハンドルはすべてのエラーをキャッチしますか?

4

1 に答える 1

2

宣言終了ハンドラーは、間違っていなければ、ストアド プロシージャ、関数、またはトリガー内でのみ宣言できます。それ以外で宣言する可能性はありません。

于 2012-12-31T11:39:26.913 に答える