勉強として、フロント:Angular⇒API:Node⇒DB:MySQLの構成になっているWMS(庫内管理システム)の、フロントで入力した諸掛がどうやってテーブルに書き込まれるのかを読み下します。
メインはDB:MySQLの為、フロント&APIはさらっと流します
諸掛:商品売買の際にかかる発送運賃や運送費、 関税などの費用のことをいいます。www.get-boki.com/archives/27/28/000036.html
〇フロント###
「登録」ボタンを押すと、onSubmitがアクティブになります。
For文で諸掛のデータを明細単位に分けて以降の処理を行います。
if文は内部を省略していますが、Validatorをかけて入力漏れ,入力間違いを確認しています。
.postが登録の処理です。
.postは以下Serviceに記述されています。
ServiceはNodeで書かれたAPIのURL後ろが/expenseを呼び出しています。
〇API###
APIのpost処理が記述されている箇所です。
queryに各項目が格納されています。
Db.expense.下にあるinsertへqueryは引き渡されています
insert処理が記述されています。
valuesの中に各値が代入されます。
〇DB###
Drop...で前のプロシージャを削除します
複数クエリを実行する為、DELIMETERで一時的に区切り文字を//に変更します
()の中で引数を設定、並び順はAPIのvaluesに則しています
BEGIN~ENDの中に複数のプロシージャを書いて、DELIMETERで括ればひとまとめの処理にできます
DECLAREを使って変数宣言します
例外処理、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でそれまでの変更処理を無効にしてトランザクションが実行される前の状態に戻します。
CALLでPS_LOG_ERRORという外部プロシージャを呼び、エラー情報を"LOG_ERROR"テーブルに残しますCOMMITで処理を反映させます。
RESIGNAL;で上位の処理に渡します(この場合はNodeに渡します)
CALLでPS_LOG_DEBUGという外部プロシージャを呼び、情報を"LOG_ALL"テーブルに残し、committして処理を確定させます。
登録可能な月か確認します。
TA_ACCOUNTBOOKからWHERE条件に該当するレコードを探し、COUNTでrowCountNrに格納します
rowCountNrが0を超える場合、登録可能ではない月の為、PS_ERROR_RAISEを呼び出してアラートを上げます。

iSALESGROUP_IDを検索キーにしてMA_SALESGROUPとMA_SALESGROUPからデータを抽出します
rEXPENSE_IDには外部シーケンス機能を呼び出して採番します
TA_EXPENSEに値を追加します。
CALLでPS_LOG_DEBUGという外部プロシージャを呼び、情報を"LOG_ALL"テーブルに残します
ENDで処理を完了させ、DELIMITERの設定を;に戻します。
