8

ストアドプロシージャ内でプリペアドステートメントを使用する場合、プロシージャの最後で割り当てを解除する必要がありますか、それとも重要ではありませんか。その理由は何ですか。

説明するいくつかのコード:

CREATE PROCEDURE getCompanyByName (IN name VARCHAR(100))
NOT DETERMINISTIC
BEGIN
  PREPARE gcbnStatement FROM 'SELECT * FROM Companies WHERE name=? LIMIT 1';
  SET @companyName = name;
  EXECUTE gcbnStatement USING @companyName;
  DEALLOCATE PREPARE gcbnStatement;
END $$

つまり、DEALLOCATEステートメントが存在する必要がありますか?乾杯!

/ビクター

4

3 に答える 3

8

MySQLのドキュメントによると:

準備済みステートメントは、それが作成されたセッションに固有です。以前に準備されたステートメントの割り当てを解除せずにセッションを終了すると、サーバーはそのステートメントの割り当てを自動的に解除します。

いいえ、非常に長時間実行されるセッションがない限り、明示的に行う必要はありません。

于 2009-07-22T12:36:42.033 に答える