ローカル変数のスコープは、それが宣言されている
          BEGIN ... END
          ブロックのスコープ内です。変数は、同じ名称を使って変数を宣言するこれらのブロックを除く、宣言ブロック内の入れ子を作っているブロックの中に引用することができます。
        
          ローカル変数名をカラム名と同じにはしないでください。SELECT
          ... INTO のような SQL
          ステートメントが、カラムとローカル変数のリファレンスを同名で含んでいると、現在の
          MySQL
          はそのリファレンスを変数名だと認識します。たとえば、次のステートメントの中では、xname
          は
          xname.カラムではなく、変数
          カラム対するリファレンスと解釈されます:
        
CREATE PROCEDURE sp1 (x VARCHAR(5))
  BEGIN
    DECLARE xname VARCHAR(5) DEFAULT 'bob';
    DECLARE newname VARCHAR(5);
    DECLARE xid INT;
    SELECT xname,id INTO newname,xid
      FROM table1 WHERE xname = xname;
    SELECT newname;
  END;
          このプロシージャーを呼び出すとき、newname
          変数は、table1.xname
          カラムに関係なく、値'bob'.を返します。
        
Restrictions on Stored Routines, Triggers, and Events も参照してください。

