MySQL では、テーブルからの列名の抽出はデータベース操作タスクの一般的な要件です。プログラムで列名をループし、その値に基づいて操作を実行するには、ストアド プロシージャを使用できます。
SHOW COLUMNS FROM myTable ステートメントは、名前を含む列のメタデータを取得します。ただし、ストアド プロシージャでこれらの名前を反復処理するには、カーソルとループ構造が必要です。
カーソルとループの実装
カーソルは、次のことを可能にするツールです。一連のレコードを順次反復します。この場合、カーソル Col_names を使用して INFORMATION_SCHEMA.COLUMNS テーブルから列名をフェッチします。 OPEN ステートメントはカーソルを初期化し、FETCH はカーソルを次の行に進め、フェッチされた値を指定された変数に割り当てます。
1 2 3 4 5 |
|
ループを実行するには、カウンター変数 i が初期化され、カウンター変数 i が初期化され、ループをいつ終了するかを決定するために FOUND_ROWS() によって返される行数。ループ内で、FETCH ステートメントは次の列名を取得し、それをcol_name 変数に割り当てます。カラム名に対して実行する操作をここに挿入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
実践例
このアプローチを利用することで、カラム名に動的にアクセスすることが可能になりますそしてストアド プロシージャで操作を実行します。次の例を考えてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
このプロシージャでは、列名が my_table テーブルから取得されます。 Done フラグは、使用可能な列名がなくなった場合のループの終了を制御します。カスタム操作を main_loop 内に追加して、列名に基づいて特定のタスクを実行できます。
以上がストアド プロシージャ内の MySQL 列名を動的に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。