Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.70 KB | None | 0 0
  1. USE [SCMUS]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[USSOPS00031] Script Date: 10/09/2014 10:15:12 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. CREATE PROCEDURE [dbo].[USSOPS00031]
  10. @inCOMCD VARCHAR(10),
  11. @inFACCD VARCHAR(2),
  12. @inERRLOG NVARCHAR(255),
  13. @inBUSDATE VARCHAR(8),
  14. @inFILE_PATH NVARCHAR(255),
  15. @inXMLPATH NVARCHAR(255),
  16. @outRESULT INT OUTPUT,
  17. @outMESSAGE NVARCHAR(500) OUTPUT
  18. AS
  19. BEGIN
  20. BEGIN TRY
  21. DECLARE @SYSDATE DATETIME,
  22. @USER NVARCHAR(MAX),
  23. @sqlstmt NVARCHAR(MAX),
  24. @param NVARCHAR(MAX),
  25. @stockClass CHAR(2),
  26. @sysOpDate CHAR(8),
  27. @fromDate CHAR(8),
  28. @toDate CHAR(8)
  29.  
  30. SELECT @SYSDATE = CURRENT_TIMESTAMP;
  31. SELECT @USER = CURRENT_USER;
  32. -- 1.
  33. SET @outRESULT = 0;
  34. SET @outMESSAGE = '';
  35.  
  36. --2. OUTファイル
  37. -- ① 【パラメータ】.BUSDATEの前月、翌月を取得する
  38. SELECT @toDate = SUBSTRING(replace(CONVERT(varchar,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,CONVERT(DATETIME, @inBUSDATE))+1,0)),102),'.',''),0,6);
  39. SELECT @fromDate = SUBSTRING(replace(CONVERT(varchar,DATEADD(month, DATEDIFF(month, 0, CONVERT(DATETIME, @inBUSDATE)), 0),102),'.',''),0,6)
  40.  
  41. -- ② 工場別需要先別在庫区分変換マスタから該当工場の在庫区分を取得する
  42. SET @stockClass = ' '
  43. SELECT
  44. @stockClass = IsNull(T1.STOCK_CLASS,' ')
  45. FROM
  46. "01CFPSM001" T1
  47. WHERE
  48. T1.PLANT_CD = '' + @inFACCD + ''
  49. AND T1.DEMAND_CLASS ='1';
  50.  
  51. -- ③ テーブル更新情報からREP販売計画の最新のシステム運用日付を取得する
  52. SET @sysOpDate = ' '
  53. SELECT
  54. @sysOpDate = T1.SYSTEM_OP_DATE
  55. FROM
  56. "01CUSVO002" T1
  57. WHERE
  58. T1.TBL_NAME = '01CRDBT006'
  59. AND T1.COMPANY_CD = '' + @inCOMCD + ''
  60. AND T1.PLANT_CD = '**'
  61.  
  62. --④ 出力データ取得
  63. SET @sqlstmt = '"'
  64. SET @sqlstmt += 'SELECT '
  65. SET @sqlstmt += ' ''I'' AS SINPAI'
  66. SET @sqlstmt += ' , T3.PRODUCT_CAT AS HIN'
  67. SET @sqlstmt += ' , ''3 '' As UCHI'
  68. SET @sqlstmt += ' , T3.BPC AS SCODE '
  69. SET @sqlstmt += ' , T3.BPC AS SCODE_KO '
  70. SET @sqlstmt += ' , ''' + @stockClass + ''' AS ZKKBN'
  71. SET @sqlstmt += ' , ''1'' AS JYS '
  72. SET @sqlstmt += ' , '' '' AS SKCODE '
  73. SET @sqlstmt += ' , ''' + @inFACCD + ''' AS FACT '
  74. SET @sqlstmt += ' , T3.PLAN_YM AS YYYYMMDD '
  75. SET @sqlstmt += ' , Sum(T3.PLAN_QTY) AS HON'
  76. SET @sqlstmt += ' , ''P'' AS KBN'
  77. SET @sqlstmt += ' FROM '
  78. SET @sqlstmt += ' ( SELECT '
  79. SET @sqlstmt += ' T1.PRODUCT_CAT '
  80. SET @sqlstmt += ' , T1.BPC'
  81. SET @sqlstmt += ' , T1.PLAN_YM '
  82. SET @sqlstmt += ' , T1.PLAN_QTY '
  83. SET @sqlstmt += ' FROM '
  84. SET @sqlstmt += ' [SCMUS].[dbo].[01CRDBT006] T1 '
  85. SET @sqlstmt += ' INNER JOIN [SCMUS].[dbo].[01CFPSM005] T2 '
  86. SET @sqlstmt += ' ON T1.PLAN_YM = T2.TARGET_YM '
  87. SET @sqlstmt += ' AND T1.PRODUCT_CAT = T2.PRODUCT_CAT '
  88. SET @sqlstmt += ' AND T2.SET_Cd = ''3 '' '
  89. SET @sqlstmt += ' AND T1.BPC = T2.BPC '
  90. SET @sqlstmt += ' AND T2.PRODUCTION_PLANT_CD = ''' + @inFACCD + ''''
  91. SET @sqlstmt += ' AND T2.PROCESS_STATS <> ''0'''
  92. SET @sqlstmt += ' WHERE '
  93. SET @sqlstmt += ' T1.SYSTEM_OP_DATE = ''' + @sysOpDate + ''''
  94. SET @sqlstmt += ' AND T1.ACQUISITION_CO_CD = ''' + @inCOMCD + ''''
  95. SET @sqlstmt += ' AND T1.RDB_F_CLASS1 = ''04'''
  96. SET @sqlstmt += ' AND T1.RDB_F_CLASS2 = ''01'''
  97. SET @sqlstmt += ' AND T1.ACQUISITION_SYS_NAME = ''MGM'''
  98. SET @sqlstmt += ' AND T1.COMPANY_CD = ''' +@inCOMCD + ''''
  99. SET @sqlstmt += ' AND T1.PLAN_YM >= ''' + @fromDate + ''''
  100. SET @sqlstmt += ' AND T1.PLAN_YM <= ''' + @toDate + ''''
  101. SET @sqlstmt += ' AND T1.DEMAND_NAME = ''REP'''
  102. SET @sqlstmt += ' AND T1.PRODUCT_CAT = ''AT'''
  103. SET @sqlstmt += ' AND T1.SET_CD NOT IN (''6 '',''9 '')'
  104. SET @sqlstmt += ' UNION ALL '
  105. SET @sqlstmt += ' SELECT '
  106. SET @sqlstmt += ' T1.PRODUCT_CAT '
  107. SET @sqlstmt += ' , T1.BPC '
  108. SET @sqlstmt += ' , T1.PLAN_YM '
  109. SET @sqlstmt += ' , T1.PLAN_QTY '
  110. SET @sqlstmt += ' FROM '
  111. SET @sqlstmt += ' [SCMUS].[dbo].[01CRDBT006] T1 '
  112. SET @sqlstmt += ' INNER JOIN [SCMUS].[dbo].[01CFPSM005] T2 '
  113. SET @sqlstmt += ' ON T1.PLAN_YM = ''' + @toDate + ''''
  114. SET @sqlstmt += ' AND T1.PRODUCT_CAT = T2.PRODUCT_CAT '
  115. SET @sqlstmt += ' AND T2.SET_Cd = ''3 '' '
  116. SET @sqlstmt += ' AND T1.BPC = T2.BPC '
  117. SET @sqlstmt += ' AND T2.PRODUCTION_PLANT_CD = ''' + @inFACCD + ''''
  118. SET @sqlstmt += ' AND T2.PROCESS_STATS <> ''0'''
  119. SET @sqlstmt += ' WHERE '
  120. SET @sqlstmt += ' T1.SYSTEM_OP_DATE = ''' + @sysOpDate + ''''
  121. SET @sqlstmt += ' AND T1.ACQUISITION_CO_CD = ''' + @inCOMCD + ''''
  122. SET @sqlstmt += ' AND T1.RDB_F_CLASS1 = ''04'''
  123. SET @sqlstmt += ' AND T1.RDB_F_CLASS2 = ''01'''
  124. SET @sqlstmt += ' AND T1.ACQUISITION_SYS_NAME = ''MGM'''
  125. SET @sqlstmt += ' AND T1.COMPANY_CD = ''' + @inCOMCD + ''''
  126. SET @sqlstmt += ' AND T1.PLAN_DATE > ''' + @toDate+ ''''
  127. SET @sqlstmt += ' AND T1.DEMAND_NAME = ''REP'''
  128. SET @sqlstmt += ' AND T1.PRODUCT_CAT = ''AT'''
  129. SET @sqlstmt += ' AND T1.SET_CD NOT IN (''6 '',''9 '')'
  130. SET @sqlstmt += ' ) AS T3 '
  131. SET @sqlstmt += ' GROUP BY '
  132. SET @sqlstmt += ' T3.PRODUCT_CAT '
  133. SET @sqlstmt += ' , T3.BPC '
  134. SET @sqlstmt += ' , T3.PLAN_YM '
  135. SET @sqlstmt += ' HAVING '
  136. SET @sqlstmt += ' Sum(T3.PLAN_QTY) <> 0 '
  137. SET @sqlstmt += ' ORDER BY '
  138. SET @sqlstmt += ' T3.PRODUCT_CAT '
  139. SET @sqlstmt += ' , T3.BPC '
  140. SET @sqlstmt += ' , T3.PLAN_YM '
  141. SET @sqlstmt += '"'
  142.  
  143. -- ⑤ BCP機能を使用して、【パラメータ】.OUTFILEファイルを出力する。
  144.  
  145. Declare @shell VARCHAR(8000)
  146. set @shell = 'bcp '
  147. + @sqlstmt
  148. + ' queryout ' + @inFILE_PATH
  149. + ' -f ' + @inXMLPATH
  150. + ' -T -S ' + @@SERVERNAME
  151. + ' -e ' + @inERRLOG
  152. exec xp_cmdShell @shell
  153.  
  154. -- 3. 返却値を設定する。
  155. -- ・それ以外の場合
  156. SET @param = @inFILE_PATH
  157. EXEC [dbo].[USSTUS00004_uspGetMsgContentOut] @outRESULT, @param, @outMESSAGE OUTPUT
  158.  
  159. END TRY
  160. BEGIN CATCH
  161. -- ・2.で例外が発生する場合
  162. -- RESULT = 8 (異常終了)
  163. SET @outRESULT = 8
  164. -- MESSAGE = エラーメッセージ
  165. SELECT @param = ERROR_MESSAGE();
  166. EXEC [dbo].[USSTUS00004_uspGetMsgContentOut] @outRESULT, @param, @outMESSAGE OUTPUT
  167. IF @@TRANCOUNT > 0
  168. ROLLBACK TRANSACTION;
  169. END CATCH
  170. END
  171.  
  172. Dim cmdStoredFunct
  173. Dim objRecordSet
  174. Set cmdStoredFunct = CreateObject("ADODB.Command")
  175. With cmdStoredFunct
  176. .CommandText = "dbo.USSIRD00031"
  177. .CommandType = AD_CMD_STORED_PROC
  178. .Parameters.Append .CreateParameter("inPGID", AD_VARCHAR, AD_PARAM_INPUT, 40, strPGID)
  179. .Parameters.Append .CreateParameter("inCOMCD", AD_VARCHAR, AD_PARAM_INPUT, 4, strComCd)
  180. .Parameters.Append .CreateParameter("inBUSDATE", AD_VARCHAR, AD_PARAM_INPUT, 8, strOpeDate)
  181. .Parameters.Append .CreateParameter("inFILE_PATH", AD_VARCHAR, AD_PARAM_INPUT, 255, strInfile)
  182. .Parameters.Append .CreateParameter("inXMLPATH", AD_VARCHAR, AD_PARAM_INPUT, 255, strXmlPath)
  183. .Parameters.Append .CreateParameter("inINERROR", AD_VARCHAR, AD_PARAM_INPUT, 255, strErrLog)
  184. .Parameters.Append .CreateParameter("outRESULT", AD_INTEGER, AD_PARAM_OUTPUT)
  185. .Parameters.Append .CreateParameter("outMESSAGE", AD_VARCHAR, AD_PARAM_OUTPUT, 500)
  186. End With
  187. Call StoredExcute(objRecordSet, cmdStoredFunct)
  188. Dim intResult
  189. Set intResult = cmdStoredFunct(6)
  190. Dim strMessage
  191. Set strMessage = cmdStoredFunct(7)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement