カーソル(コンピューティング)(台湾)
前の分析では、それはsqlの検索操作によって返されるデータは、ほとんどの場合、コレクションの形で、つまり、sqlは、複数のクエリのレコードを一緒に得意であり、返されることを見ることができる、あなたは今、行ごとにクエリの結果に対処する必要がある場合、これは本当にsqlステートメントの問題ですが、カーソルと呼ばれる技術は、この問題を解決することができます、いわゆるカーソルは、メモリに保存されたデータのコレクションを取得し、sqlステートメントの問題を解決する処理のために順番にデータの各部分を取り出すことができるということです行ごとに処理することはできません。いわゆるカーソルは、データのコレクションを取得し、メモリに保存することができますし、処理のために順番にデータの各部分を取り出すと、sqlステートメントは、カーソルを読み取るの問題に対処するためにレコードの行にすることはできません問題を解決することです以下に示されています:
カーソル名を @variable1、@variable2、@variable3 にフェッチします。// ここで値をクエリ文のカラムに対応するように1つずつ設定します。ですから、間違った場所に書かないでください。
テーブル名をパラメータとする mysql ストアドプロシージャ ----------- 動的カーソルの実装
セクションを見る
例えば、上記の例では、カーソルを使って対応するテーブルを空にしようと書きましたが、テーブルは「存在しません」。
ストアド・プロシージャ・ステートメント。
開始
declare flag int default 0;# ループを抜けるかどうかを決めるフラグ変数を定義します。
declare tmp varchar(40);# 一時記憶変数の定義
declare cur cursor for select name from view_all_table where name not LIKE 'sys_%' ;# カーソルの宣言
見つからなかった場合の継続ハンドラの宣言 set flag = 1; #例外処理とflag=1の設定
カーソルを開く
while flag!=1 do
fetch cur into tmp ;#カーソルから値を取得してtmpに格納
if flag !=1なら
SET @sqlcmd = concat('truncate table ', tmp);
sqlcmdからstmtを準備します;
stmtを実行します。
デアロケート準備 stmt;
#テーブルを切り捨てます;
を終了します;
end while;
close cur; #カーソルを閉じる
終了