Genel Bilgiler
SQL Server
Stored Procedure
✅ Etkilenmez
23.12.2025 07:15
23.12.2025 16:10
İstatistikler
0
Kod Analizi
74
Satır
0
Kullandığı
0
Kullanan
🔗
İlişki Bulunamadı
Bu nesne için henüz ilişki tanımlanmamış. İlişki Analizi sayfasından otomatik analiz başlatabilirsiniz.
Tam SQL Kodu
CREATE PROCEDURE SP_UPDATE_KOD_PRODUCERCODE
@OldCodes NVARCHAR(MAX), -- Eski CODE degerleri (örn: 'A123,B456,C789')
@NewCodes NVARCHAR(MAX) -- Yeni CODE degerleri (örn: 'OEM1,OEM2,OEM3')
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Old TABLE (rn INT IDENTITY(1,1), OldCode NVARCHAR(100));
DECLARE @New TABLE (rn INT IDENTITY(1,1), NewCode NVARCHAR(100));
DECLARE @Skipped TABLE (OldCode NVARCHAR(100), NewCode NVARCHAR(100));
DECLARE @pos INT = 0, @next INT, @val NVARCHAR(100);
-- ?? Eski kodlari parçala
SET @OldCodes = @OldCodes + ',';
WHILE CHARINDEX(',', @OldCodes, @pos + 1) > 0
BEGIN
SET @next = CHARINDEX(',', @OldCodes, @pos + 1);
SET @val = LTRIM(RTRIM(SUBSTRING(@OldCodes, @pos + 1, @next - @pos - 1)));
IF @val <> '' INSERT INTO @Old(OldCode) VALUES(@val);
SET @pos = @next;
END
-- ?? Yeni kodlari parçala
SET @pos = 0;
SET @NewCodes = @NewCodes + ',';
WHILE CHARINDEX(',', @NewCodes, @pos + 1) > 0
BEGIN
SET @next = CHARINDEX(',', @NewCodes, @pos + 1);
SET @val = LTRIM(RTRIM(SUBSTRING(@NewCodes, @pos + 1, @next - @pos - 1)));
IF @val <> '' INSERT INTO @New(NewCode) VALUES(@val);
SET @pos = @next;
END
-- ?? Güncelleme: sadece yeni CODE henüz tabloda yoksa
UPDATE I
SET
I.PRODUCERCODE = ISNULL(I.PRODUCERCODE, '') + '/' + I.CODE,
I.CODE = N.NewCode
FROM LG_011_ITEMS I
INNER JOIN @Old O ON I.CODE = O.OldCode
INNER JOIN @New N ON O.rn = N.rn
WHERE NOT EXISTS (
SELECT 1 FROM LG_011_ITEMS X WHERE X.CODE = N.NewCode
);
-- ?? Hangi kodlarin atlandigini listele
INSERT INTO @Skipped (OldCode, NewCode)
SELECT O.OldCode, N.NewCode
FROM @Old O
INNER JOIN @New N ON O.rn = N.rn
WHERE EXISTS (
SELECT 1 FROM LG_011_ITEMS X WHERE X.CODE = N.NewCode
);
-- ?? Sonuç döndür
DECLARE @UpdatedCount INT = @@ROWCOUNT;
PRINT '------------------------------------------';
PRINT '? Güncelleme tamamlandi.';
PRINT 'Güncellenen kayit sayisi: ' + CAST(@UpdatedCount AS NVARCHAR(10));
PRINT '------------------------------------------';
IF EXISTS (SELECT 1 FROM @Skipped)
BEGIN
PRINT '?? Asagidaki kodlar zaten tabloda vardi, atlandi:';
SELECT * FROM @Skipped;
END
ELSE
BEGIN
PRINT 'Tüm kayitlar basariyla güncellendi, çakisma yok.';
END
END