質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

1回答

1291閲覧

プロシージャの処理内容がわかりません。①

KINGFROG

総合スコア27

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2016/10/16 07:03

編集2016/10/16 07:07

一時テーブルから本テーブルへデータを移行するプロシージャで、処理方法が理解できません。
特に論理削除、更新、追加の処理で、どういったデータが一時テーブルから移行されると実行されるのかが知りたいです。(コードが長いため、①、②分けて書いています)
どなたかご教示頂ければと思います。
宜しくお願い致します。

CREATE PROCEDURE [dbo].[sp_10_100]
@pMst_Handling_Company_Id INT

AS
SET NOCOUNT ON;
DECLARE @ErrMessage VARCHAR(1000) -- エラーメッセージ
, @iParm_Check INT -- チェック用
, @iIs_TrnStart INT -- トランザクション開始判定(0:トランザクション未開始、1:トランザクション開始)
, @dUpdate_Date DATETIME -- 更新日時
, @vUpdate_User_Id VARCHAR(40) -- 更新ユーザー
, @vUpdate_Prg_Id VARCHAR(20) -- 更新プログラムID
, @dTaisyo_Date DATETIME -- 対象日付
-- 入力データチェック用
, @curInput CURSOR -- 入力チェック用カーソル
, @I_INPUT_CHECK INT -- 未入力チェック (0:チェックOK、1:チェックNG)
, @I_LOGI_ONETMCSTM_CD VARCHAR(30) -- 物流ワンタイムコード
, @I_CHKDEGT_SHIPCSTM_CD VARCHAR(11) -- チェックデジット付出荷先コード
-- 重複チェック用
, @curDuplicate1 CURSOR -- 重複レコードカーソル
;
-- 対象データ保持テーブル
CREATE TABLE #tTmp_MARSIF_TMP
(
LOGI_ONETMCSTM_CD VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS -- 物流ワンタイムコード
, ONETMCSTM_CD VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS -- ワンタイムコード
, VKORG VARCHAR(4) COLLATE Japanese_CI_AI_KS_WS -- 販売組織
, LOGI_CHANEL_CD VARCHAR(2) COLLATE Japanese_CI_AI_KS_WS -- 物流流通チャネルコード
, SPART VARCHAR(2) COLLATE Japanese_CI_AI_KS_WS -- 製品部門
, KANA_NM VARCHAR(600) COLLATE Japanese_CI_AI_KS_WS -- ワンタイムカナ名称
, SHORT_NM VARCHAR(120) COLLATE Japanese_CI_AI_KS_WS -- ワンタイム略称
, POST_CD_SAP VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS -- SAP用郵便番号
, COUNTRY VARCHAR(2) COLLATE Japanese_CI_AI_KS_WS -- 国コード
, TEL VARCHAR(15) COLLATE Japanese_CI_AI_KS_WS -- 電話
, FAX VARCHAR(15) COLLATE Japanese_CI_AI_KS_WS -- FAX
, WAERS VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS -- 通貨コード
, KALKS VARCHAR(1) COLLATE Japanese_CI_AI_KS_WS -- 得意先価格決定区分
, TAXKD VARCHAR(1) COLLATE Japanese_CI_AI_KS_WS -- 税分類
, KVGR1 VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS -- 得意先グループ1
, SHIP_AREA VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS -- 納入区域
, AREA_CD VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS -- 地域コード
);
-- 1.対象データ取得
INSERT INTO #tTmp_MARSIF_TMP
SELECT LTRIM(RTRIM(CONVERT(VARCHAR(10),ISNULL(MST.LOGI_ONETMCSTM_CD,'')))) -- 物流ワンタイムコード
, LTRIM(RTRIM(CONVERT(VARCHAR(12),ISNULL(MST.ONETMCSTM_CD,'')))) -- ワンタイムコード
, LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.VKORG,'')))) -- 販売組織
, LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.LOGI_CHANEL_CD,'')))) -- 物流流通チャネルコード
, LTRIM(RTRIM(CONVERT(VARCHAR(2),ISNULL(MST.SPART,'')))) -- 製品部門
, LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.KANA_NM,'')))) -- ワンタイムカナ名称
, LTRIM(RTRIM(CONVERT(VARCHAR(70),dbo.Fnc_NARROW_TO_WIDE(ISNULL(MST.SHORT_NM,''))))) -- 出荷先正式名称
, CASE WHEN LEN(LTRIM(RTRIM(ISNULL(MST.POST_CD,'')))) = 7 -- 郵便番号
THEN LTRIM(RTRIM(ISNULL(MST.POST_CD,''))) -- SAP用郵便番号
ELSE ''
END
, LTRIM(RTRIM(CONVERT(VARCHAR(10),ISNULL(MST.COUNTRY,'')))) -- 国コード
, LTRIM(RTRIM(CONVERT(VARCHAR(16),ISNULL(MST.TEL,'')))) -- 電話
, LTRIM(RTRIM(CONVERT(VARCHAR(31),ISNULL(MST.FAX,'')))) -- FAX
, LTRIM(RTRIM(CONVERT(VARCHAR(31),ISNULL(MST.WAERS,'')))) -- 通貨コード
, LTRIM(RTRIM(CONVERT(VARCHAR(5),ISNULL(MST.KALKS,'')))) -- 得意先価格決定区分
, CASE WHEN ISNULL(MST.TAXKD, '0') = '1' -- 税分類
THEN '1'
ELSE '0'
END
, LTRIM(RTRIM(CONVERT(VARCHAR(3),ISNULL(MST.KVGR1,'')))) -- 得意先グループ1
, CASE WHEN ISNULL(MST.SHIP_AREA, '') = '' -- 納入区域
THEN 'Z900000001'
ELSE LTRIM(RTRIM(CONVERT(VARCHAR(10),ISNULL(MST.SHIP_AREA,''))))
END
, LTRIM(RTRIM(RIGHT('000' + LEFT(ISNULL(MST.AREA_CD,''), 3),3))) -- 地域コード
FROM dbo.MARSIF_TMP_ONETMCSTM_MST AS MST -- ワンタイムマスタ一時テーブル
WHERE CONVERT(DATETIME, MST.EFFECTIVE_DT_FROM) <= @dTaisyo_Date
AND CONVERT(DATETIME, MST.EFFECTIVE_DT_TO) > @dTaisyo_Date
if (@@ROWCOUNT < 1)
BEGIN
-- トランザクション開始
BEGIN TRANSACTION
SET @iIs_TrnStart = 1;

-- 4. ワンタイムマスタ論理削除 UPDATE dbo.MST_W_SHOP_SHIPMENT SET EFFECT_FLG = 0 -- ワンタイムマスタ有効区分(0(False):無効) , UPDATE_DATE = @dUpdate_Date , UPDATE_USER_ID = @vUpdate_User_Id , UPDATE_PRG_ID = @vUpdate_Prg_Id WHERE MST_W_SHOP_SHIPMENT.MST_HANDLING_COMPANY_ID = @pMst_Handling_Company_Id AND MST_W_SHOP_SHIPMENT.EFFECT_FLG = 1 AND NOT EXISTS (SELECT * FROM #tTmp_MARSIF_TMP WHERE #tTmp_MARSIF_TMP.LOGI_ONETMCSTM_CD = MST_W_SHOP_SHIPMENT.SHOP_SHIPMENT_CD) ;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

なんとか自己解決できました。

投稿2016/11/23 02:31

KINGFROG

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問