mysqlカーソル例mysqlカーソル簡易チュートリアルmysql一括操作データmysql一括更新データmysql逐条更新データ

1452 ワード

mysql V 5から.5から、InnoDBをデフォルトのストレージエンジンとして大きく変更しました.InnoDBはトランザクションをサポートし、関連するRDBMSの特性を持っています.ACIDトランザクションのサポート、データ整合性(外部キーのサポート)、災害復旧能力などです.
カーソルの知識を簡単にまとめます.(一)、認識カーソル(cursor)
データがどこに取られたかを識別する読み取り可能な標識です.
(二)カーソル特性
1、読み取り専用2、スクロールしない3、敏感でない
(3)カーソルの使用
カーソルはプロセッサを定義する前に定義する必要がありますが、変数はカーソルを定義する前に定義する必要があります.順序は変数定義-カーソル定義-プロセッサです.
1.カーソルの定義
DECLARE cursor_name CURSOR FOR select_statementという文はカーソルを宣言します.また、サブプログラムで複数のカーソルを定義することもできます.1つのブロック内の各カーソルに一意の名前を付ける必要があります.カーソルを宣言した後も単一の操作です.
2.カーソルOPEN
OPEN cursor_nameこの文は、以前に宣言されたカーソルを開きます.
3.カーソルFETCH
FETCH cursor_name INTO var_name [, var_name] ... この文は、指定したオープンカーソルで次のローを読み込み(次のローがある場合)、カーソルポインタをローに移動します.
4.カーソルCLOSE
CLOSE cursor_nameという文は以前開いていたカーソルを閉じます.使い終わったら閉じなければなりません.
(四)例として、カーソルを使用してデータを1つずつ更新するストレージ・プロシージャ(一括更新データ)
BEGIN
 DECLARE  no_more_record INT DEFAULT 0;
 DECLARE  pID BIGINT(20);
 DECLARE  pValue DECIMAL(15,5);
 DECLARE  cur_record CURSOR FOR   SELECT colA, colB from tableABC;  /*           */
 DECLARE  CONTINUE HANDLER FOR NOT FOUND  SET  no_more_record = 1; /*        ,  NOT FOUND   ,         1*/


 OPEN  cur_record; /*    OPEN    */
 FETCH  cur_record INTO pID, pValue; /*           ,              */


 WHILE no_more_record != 1 DO
 INSERT  INTO testTable(ID, Value)
 VALUES  (pID, pValue);
 FETCH  cur_record INTO pID, pValue;

 END WHILE;
 CLOSE  cur_record;  /*      CLOSE      */
END