← Detay Sayfası
Nesne Düzenle
|
SP_UPDATE_KOD_PRODUCERCODE
İlgili Uygulama
-- Seçiniz --
SQL Server
Nesne Türü
View
Stored Procedure
Trigger
Job
Nesne Adı
Bu nesne dönem devrinden etkileniyor mu? (Örn: İçinde _01_ gibi sabit dönem kodu var mı?)
Genel Kullanım Amacı ve Notlar
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
Oluşturulma: 23.12.2025 07:15
Son Güncelleme: 23.12.2025 17:28
İptal
Nesneyi Sil
Değişiklikleri Kaydet