Entegre bir sistem kurduğunuzda birbirinden bağımsız kurgulanan "Hareket Özel Kodları"'nın aynı kayıtlardan oluşabilmesi için bir Stored Procedure (SP) hazırladım. Amaç, Malzeme Fişi satırında açılan hareket özel kodunun tüm girişlerde görülmesini sağlamak. Aşağıdaki SP'yi, SQL Server üzerinde bir JOB'a bağlarsanız Hareket özel kodlarını sürekli güncel tutabilirsiniz.
Stored Procedure Kodu:
create PROCEDURE [dbo].[Sp_Specode_Kontrol]
as
DECLARE @NR VARCHAR(50)
DECLARE @String VARCHAR(8000)
DECLARE MainProc CURSOR FOR
SELECT NR FROM L_CAPIFIRM -- tüm firmalar için çalışsın
OPEN MainProc
FETCH NEXT FROM MainProc
INTO @NR
WHILE @@FETCH_STATUS = 0
BEGIN
Set @String = 'DECLARE @SPECODE VARCHAR(25)
DECLARE @SPECODE_COUNT INT
DECLARE @VARMI INT
DECLARE @LastSeq INT
DECLARE @DEFINITION_ VARCHAR(100)
DECLARE @COLOR INT
DECLARE @WINCOLOR INT
DECLARE @SITEID INT
DECLARE @RECSTATUS INT
DECLARE @ORGLOGICREF INT
SELECT SPECODE,COUNT(SPECODE) FROM LG_' + @NR + '_SPECODES (NOLOCK) WHERE SPECODETYPE IN (3,17,20,21,24,25,27,33) GROUP BY SPECODE
HAVING COUNT(SPECODE)<8 p="p">
DECLARE processes CURSOR FOR
SELECT SPECODE,COUNT(SPECODE) FROM LG_' + @NR + '_SPECODES (NOLOCK) WHERE SPECODETYPE IN (3,17,20,21,24,25,27,33) GROUP BY SPECODE
HAVING COUNT(SPECODE)<8 p="p"> OPEN processes
FETCH NEXT FROM processes
INTO @SPECODE,@SPECODE_COUNT
WHILE @@FETCH_STATUS = 0
BEGIN
SET @VARMI = 0
--TÜM BİLGİLERİN OLDUĞU KAYIT TESPİT EDİLİYOR...
SELECT TOP 1 @DEFINITION_=DEFINITION_,@COLOR=COLOR,@WINCOLOR=WINCOLOR,@SITEID=SITEID,@RECSTATUS=RECSTATUS,@ORGLOGICREF=ORGLOGICREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE ORDER BY SITEID DESC
--SIRASIYLA TUM SPECODE''LAR KONTROL EDİLİYOR
--1. SPECODETYPE=3
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 3
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,3,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--2. SPECODETYPE=17 satınalma siparişi
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 17
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,17,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--3. SPECODETYPE=20
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 20
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,20,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--4. SPECODETYPE=21
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 21
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,21,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--5. SPECODETYPE=24
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 24
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,24,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--6. SPECODETYPE=25
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 25
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,25,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--7. SPECODETYPE=27
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 27
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,27,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
--8. SPECODETYPE=33
SET @VARMI = 0
SELECT @VARMI=LOGICALREF FROM LG_' + @NR + '_SPECODES WHERE SPECODE = @SPECODE AND SPECODETYPE = 33
IF @VARMI = 0
BEGIN
INSERT INTO [LG_' + @NR + '_SPECODES] ([CODETYPE],[SPECODETYPE],[SPECODE],[DEFINITION_],[COLOR],[WINCOLOR],[SITEID],[RECSTATUS],[ORGLOGICREF])
VALUES (1,33,@SPECODE,@DEFINITION_,@COLOR,@WINCOLOR,@SITEID,@RECSTATUS,@ORGLOGICREF)
END
FETCH NEXT FROM processes
INTO @SPECODE,@SPECODE_COUNT
END
CLOSE processes
DEALLOCATE processes'
EXEC (@string)
FETCH NEXT FROM MainProc
INTO @NR
END
CLOSE MainProc
DEALLOCATE MainProc
Kullanımı :
8>8>
DECLARE @RC int
-- TODO: Set parameter values here.
EXECUTE @RC = [TIGER2_DB].[dbo].[Sp_Specode_Kontrol]
GO
Hiç yorum yok:
Yorum Gönder