STERFIELD

ストアド・プロシージャを試してみる

ストアド・プロシージャを試してみる

ストアド・プロシージャを使ってみる

ストアド・プロシージャとは?

MySQLなどのデータベース上で実行出来るプログラム言語。

何が出来る?

通常のクエリ(DBへの命令文)では表現出来ない動的なデータの処理
フロントアプリケーションに依存しない共通処理

何が出来ない?

DBへの負荷の重い複雑な処理
自動メモリ解放

手こずった箇所

幾つかありました。

  • DECLAREと言う宣言が必須
  • 変数への代入時はSETや”SELECT ~ INTO”の構文を守る
  • 条件文の行末には”;”無し、他は有り
  • SELECTなどで複数レコード取得時はFETCH。CURSOR構文で取得したい状態を記憶
  • 区切り文字列(デリミタ)を最初に変更ほぼ必須

最初の宣言はphpなどでは必須ではないのでスクリプトの緩い言語では陥りがち。

というようなエラーが表示されたら要チェック。

実施内容

特定テーブルのデータを複製し、特定カラムだけ連番で置き換える。

以下ではSampleTableで最後のstatusカラムだけ引数で置き換える処理を行っています。

シャープのコメント通り。
最初に変数宣言。
次に取得クエリの宣言。
ループするための数を取得。
クエリオープン。
ループ内、クエリ実行結果取得
取得したクエリをstatus以外インサート
ループ用の変数インクリメント
クエリ閉じる。

実行時は以下を実施

最後に

プログラムを作成して不要となったものは手動で消します。

でメモリ上にあるプログラム一覧が表示されます。

で削除されます。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい