プロシージャを作成するさいにまずは、連携一時テーブルから、有効データを抽出して、プログラム内部のみ使用一時テーブル(#tTmp_IF_TMP)に格納し、対象のデータが1件も存在しない場合は、終了ログを出力し、処理を終了する処理を実行したいのですが、「'where'付近で不適切な構文があります。」とエラー文が出てしまい、上手くいきません。
どこか悪いかご教授頂ければと思います。
CREATE PROCEDURE [dbo].[sp_141_600]
@pMst_Handling_Company_Id INT
AS
SET NOCOUNT ON;
DECLARE @ErrMessage VARCHAR(1000)
, @iParm_Check INT
, @iIs_TrnStart INT
, @dUpdate_Date DATETIME
, @vUpdate_User_Id VARCHAR(40)
, @vUpdate_Prg_Id VARCHAR(20)
, @dTaisyo_Date DATETIME
-- 入力データチェック用
, @curInput CURSOR
, @I_LOGI_ONETMCSTM_CD VARCHAR(10)
, @I_ONETMCSTM_CD VARCHAR(10)
-- 重複チェック用
, @curDuplicate1 CURSOR
, @curDuplicate2 CURSOR
;
-- 対象データ保持テーブル
CREATE TABLE #tTmp_MARSIF_TMP
(
LOGI_ONETMCSTM_CD VARCHAR(30) COLLATE Japanese_CI_AI_KS_WS
, ONETMCSTM_CD VARCHAR(30) COLLATE Japanese_CI_AI_KS_WS
, BUKRS VARCHAR(12) COLLATE Japanese_CI_AI_KS_WS
, VKORG VARCHAR(12) COLLATE Japanese_CI_AI_KS_WS
, LOGI_CHANEL_CD VARCHAR(6) COLLATE Japanese_CI_AI_KS_WS
, SPART VARCHAR(6) COLLATE Japanese_CI_AI_KS_WS
, KTOKD VARCHAR(12) 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(30) COLLATE Japanese_CI_AI_KS_WS
, COUNTRY VARCHAR(6) COLLATE Japanese_CI_AI_KS_WS
, TEL VARCHAR(45) COLLATE Japanese_CI_AI_KS_WS
, FAX VARCHAR(45) COLLATE Japanese_CI_AI_KS_WS
, WAERS VARCHAR(60) COLLATE Japanese_CI_AI_KS_WS
, KALKS VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS
, VERSG VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS
, KVGR1 VARCHAR(9) COLLATE Japanese_CI_AI_KS_WS
, LPRIO VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS
, BULK_SHIP_CFC VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS
, KVGR2 VARCHAR(3) COLLATE Japanese_CI_AI_KS_WS
, CHKDEGT_ONETMCSTM_CD VARCHAR(33) COLLATE Japanese_CI_AI_KS_WS
, AREA_CD VARCHAR(10) COLLATE Japanese_CI_AI_KS_WS
);
-- 開始ログ出力 EXEC sc_090_000 '0','sp_141_600(受注先マスタ登録)','START' -- 0.初期値セット SET @iParm_Check = 0; SET @iIs_TrnStart = 0; SET @dUpdate_Date = GETDATE(); SET @vUpdate_User_Id = 'SYSTEM'; SET @vUpdate_Prg_Id = 'sp_141_600'; SET @dTaisyo_Date = dbo.Fnc_GET_ONLINE_DATE(@dUpdate_Date, 0); -- 0.1.パラメータチェック -- 会社ID IF (@pMst_Handling_Company_Id IS NULL) BEGIN SET @ErrMessage = '受注先マスタ登録処理で、パラメータが正しく指定されませんでした。確認してください。' EXEC sc_090_000 '-1','sp_141_600(受注先マスタ登録)',@ErrMessage --エラーログ出力 RETURN -1 -- システムエラー END -- 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.BUKRS,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.VKORG,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(2),ISNULL(MST.LOGI_CHANEL_CD,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(2),ISNULL(MST.SPART,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.KTOKD,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(20),ISNULL(MST.KANA_NM,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(70),ISNULL(MST.SHORT_NM,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(10),ISNULL(MST.POST_CD_SAP,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(3),ISNULL(MST.COUNTRY,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(16),ISNULL(MST.TEL,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(31),ISNULL(MST.FAX,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(5),ISNULL(MST.WAERS,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(1),ISNULL(MST.KALKS,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(1),ISNULL(MST.VERSG,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(3),ISNULL(MST.KVGR1,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(2),ISNULL(MST.LPRIO,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(1),ISNULL(MST.BULK_SHIP_CFC,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(3),ISNULL(MST.KVGR2,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(12),ISNULL(MST.CHKDEGT_ONETMCSTM_CD,'')))) , LTRIM(RTRIM(CONVERT(VARCHAR(4),ISNULL(MST.AREA_CD,'')))) 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 AND ( @pMst_Handling_Company_Id = 1 AND MST.COMPANY_CFC IN ('1', '4') ) if (@@ROWCOUNT < 1) BEGIN --正常完了ログ出力 EXEC sc_090_000 '0','sp_141_600(取込対象ファイルなし)','SUCCESS' RETURN 0 -- 正常終了 END
回答2件
あなたの回答
tips
プレビュー