LoginSignup
0
2

More than 5 years have passed since last update.

MySQLの諸掛登録処理をまとめる

Posted at

勉強として、フロント:Angular⇒API:Node⇒DB:MySQLの構成になっているWMS(庫内管理システム)の、フロントで入力した諸掛がどうやってテーブルに書き込まれるのかを読み下します。

メインはDB:MySQLの為、フロント&APIはさらっと流します

諸掛:商品売買の際にかかる発送運賃や運送費、 関税などの費用のことをいいます。www.get-boki.com/archives/27/28/000036.html

〇フロント

「登録」ボタンを押すと、onSubmitがアクティブになります。
For文で諸掛のデータを明細単位に分けて以降の処理を行います。
if文は内部を省略していますが、Validatorをかけて入力漏れ,入力間違いを確認しています。
.postが登録の処理です。

UI画面.png

.postは以下Serviceに記述されています。
ServiceはNodeで書かれたAPIのURL後ろが/expenseを呼び出しています。

UIサービス.png

〇API

APIのpost処理が記述されている箇所です。
queryに各項目が格納されています。
Db.expense.下にあるinsertqueryは引き渡されています

API_insert.png

insert処理が記述されています。
valuesの中に各値が代入されます。

API_models.png

API_insert2.png

〇DB

Drop...で前のプロシージャを削除します
複数クエリを実行する為、DELIMETERで一時的に区切り文字を//に変更します
()の中で引数を設定、並び順はAPIのvaluesに則しています
BEGIN~ENDの中に複数のプロシージャを書いて、DELIMETERで括ればひとまとめの処理にできます

1_DB.png

DECLAREを使って変数宣言します

2_DB.png

例外処理、SQLEXCEPTIONだった場合でEXITで処理を終了させます。
SQLEXCEPTIONはSQLSTATEの例外コードが02(データなし).01(警告)以外の場合を意味します。
SQLSTATEとはエラーの属性を表すコードでSQL文の実行後にHADBから返されます、5桁のコードで,先頭2桁がクラス,下3桁がサブクラスです。
GET DIAGNOSTICS CONDITION 1でMySQLのエラーコードを取得します
MYSQL_ERRNOはエラーコードを示す整数、RETURNED_SQLSTATE@はエラーに対応する SQLSTATE 値、MESSAGE_TEXTはMySQL 操作のエラーメッセージです。
ROLLBACKでそれまでの変更処理を無効にしてトランザクションが実行される前の状態に戻します。
CALLPS_LOG_ERRORという外部プロシージャを呼び、エラー情報を"LOG_ERROR"テーブルに残しますCOMMITで処理を反映させます。
RESIGNAL;で上位の処理に渡します(この場合はNodeに渡します)
CALLPS_LOG_DEBUGという外部プロシージャを呼び、情報を"LOG_ALL"テーブルに残し、committして処理を確定させます。

3_DB.png

登録可能な月か確認します。
TA_ACCOUNTBOOKからWHERE条件に該当するレコードを探し、COUNTrowCountNrに格納します
rowCountNrが0を超える場合、登録可能ではない月の為、PS_ERROR_RAISEを呼び出してアラートを上げます。
4_DB.png

iSALESGROUP_IDを検索キーにしてMA_SALESGROUPとMA_SALESGROUPからデータを抽出します
rEXPENSE_IDには外部シーケンス機能を呼び出して採番します

4.1.png

4.2_DB.png

TA_EXPENSEに値を追加します。

5_DB.png

CALLPS_LOG_DEBUGという外部プロシージャを呼び、情報を"LOG_ALL"テーブルに残します
ENDで処理を完了させ、DELIMITERの設定を;に戻します。
6_DB.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2