diff --git a/svc/queries/product_pricing.go b/svc/queries/product_pricing.go index 8aa15b2..728dabe 100644 --- a/svc/queries/product_pricing.go +++ b/svc/queries/product_pricing.go @@ -94,13 +94,19 @@ func GetProductPricingList(ctx context.Context, limit int, afterProductCode stri for _, item := range out { codes = append(codes, strings.TrimSpace(item.ProductCode)) } - codesCSV := strings.Join(codes, ",") + valueRows := make([]string, 0, len(codes)) + metricArgs := make([]any, 0, len(codes)) + for i, code := range codes { + paramName := "@p" + strconv.Itoa(i+1) + valueRows = append(valueRows, "("+paramName+")") + metricArgs = append(metricArgs, code) + } metricsQuery := ` WITH req_codes AS ( - SELECT DISTINCT LTRIM(RTRIM(value)) AS ProductCode - FROM STRING_SPLIT(@p1, ',') - WHERE LEN(LTRIM(RTRIM(value))) > 0 + SELECT DISTINCT LTRIM(RTRIM(v.ProductCode)) AS ProductCode + FROM (VALUES ` + strings.Join(valueRows, ",") + `) v(ProductCode) + WHERE LEN(LTRIM(RTRIM(v.ProductCode))) > 0 ), latest_base_price AS ( SELECT @@ -206,7 +212,7 @@ func GetProductPricingList(ctx context.Context, limit int, afterProductCode stri ON db.ItemCode = rc.ProductCode; ` - metricsRows, err := db.MssqlDB.QueryContext(ctx, metricsQuery, codesCSV) + metricsRows, err := db.MssqlDB.QueryContext(ctx, metricsQuery, metricArgs...) if err != nil { return nil, fmt.Errorf("metrics query failed: %w", err) }