SP_Cust_PDA_GetPackageBarCodes.sql 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. -- ================================================
  2. -- Template generated from Template Explorer using:
  3. -- Create Procedure (New Menu).SQL
  4. --
  5. -- Use the Specify Values for Template Parameters
  6. -- command (Ctrl-Shift-M) to fill in the parameter
  7. -- values below.
  8. --
  9. -- This block of comments will not be included in
  10. -- the definition of the procedure.
  11. -- ================================================
  12. SET ANSI_NULLS ON
  13. GO
  14. SET QUOTED_IDENTIFIER ON
  15. GO
  16. -- =============================================
  17. -- Author: 曹嘉杰
  18. -- Create date: 2022/8/25
  19. -- Description: 获取分包下的所有条码
  20. -- =============================================
  21. IF (EXISTS (SELECT * FROM SYS.OBJECTS WHERE NAME = 'SP_Cust_PDA_GetPackageBarCodes'))
  22. DROP PROC SP_Cust_PDA_GetPackageBarCodes
  23. GO
  24. CREATE PROCEDURE SP_Cust_PDA_GetPackageBarCodes
  25. -- Add the parameters for the stored procedure here
  26. @BarCodes AS NVARCHAR(MAX),
  27. @OrgCode AS NVARCHAR(50)
  28. AS
  29. BEGIN
  30. -- SET NOCOUNT ON added to prevent extra result sets from
  31. -- interfering with SELECT statements.
  32. SET NOCOUNT ON;
  33. -- Insert statements for procedure here
  34. DECLARE @SQL NVARCHAR(MAX)
  35. DECLARE @OrgID BIGINT
  36. SELECT @OrgID = ID FROM Base_Organization WHERE Code = @OrgCode
  37. IF OBJECT_ID('tempdb..#TempBarCodeTable') IS NOT NULL
  38. BEGIN
  39. DROP TABLE #TempBarCodeTable
  40. END
  41. CREATE TABLE #TempBarCodeTable (
  42. BarCode NVARCHAR(500)
  43. )
  44. SET @SQL = 'INSERT INTO #TempBarCodeTable SELECT ''' + REPLACE (@BarCodes,',',''' AS BarCode UNION SELECT ''') + ''''
  45. EXEC(@SQL)
  46. IF OBJECT_ID('tempdb..#TempPackageCodeTable') IS NOT NULL
  47. BEGIN
  48. DROP TABLE #TempPackageCodeTable
  49. END
  50. CREATE TABLE #TempPackageCodeTable (
  51. PackageCode NVARCHAR(500),
  52. Segment77 NVARCHAR(50)
  53. )
  54. INSERT INTO #TempPackageCodeTable
  55. SELECT DISTINCT
  56. CASE WHEN (SUBSTRING(Code, 1, 1) = 'C' AND LEN(Code) = 16) THEN SUBSTRING(Code, 1, 9) + '_' + SUBSTRING(Code, 12, 5) ELSE SUBSTRING(Code, 1, LEN(Code) - 5) END AS PackageCode,
  57. Segment77 AS Segment77
  58. FROM BC_BarCode
  59. WHERE Code IN (SELECT BarCode FROM #TempBarCodeTable)
  60. -- AND Org = @OrgID
  61. AND BarCodeType = 3
  62. AND ISNULL(Segment78, 1) <> 1
  63. SELECT T_BarCode.Code, T_BarCode.Segment78 AS PackageCount, T_BarCode.Segment77 AS PackageGroup
  64. FROM BC_BarCode T_BarCode
  65. INNER JOIN #TempPackageCodeTable T_PackageCode ON CASE WHEN (SUBSTRING(Code, 1, 1) = 'C' AND LEN(Code) = 16) THEN SUBSTRING(Code, 1, 9) + '_' + SUBSTRING(Code, 12, 5) ELSE CASE WHEN LEN(Code) > 5 THEN SUBSTRING(Code, 1, LEN(Code) - 5) ELSE '' END END = T_PackageCode.PackageCode
  66. AND T_BarCode.Segment77 = T_PackageCode.Segment77
  67. END
  68. GO
  69. -- EXEC SP_Cust_PDA_GetPackageBarCodes @BarCodes = 'C220829020100005,C220825020200001,11019999-00012-110-PO1102208300002-10-00001,11019999-00012-110-PO1102208300002-10-00002,11019999-00012-110-PO1102208300002-10-00003,11019999-00012-110-PO1102208300002-10-00004,11019999-00012-110-PO1102208300002-10-00005,M2120201-00030-110-PO1102208300002-20-00001', @OrgCode = '110'
  70. -- EXEC SP_Cust_PDA_GetPackageBarCodes @BarCodes = 'C220611030100061,C220829020100005,C220825020200001,11019999-00012-110-PO1102208300002-10-00002,11019999-00012-110-PO1102208300002-10-00003,11019999-00012-110-PO1102208300002-10-00004,11019999-00012-110-PO1102208300002-10-00005,M2120201-00030-110-PO1102208300002-20-00001', @OrgCode = '110'