특정 클라이언트 계정에 대한 시퀀스 번호를 설정하기 위해 호출되는 저장 프로 시저가 있습니다. 간단한 표는 모든 클라이언트에 대해 마지막으로 발행 된 값을 저장하며 SP는 SupplyChainID의 매개 변수와 필요한 숫자의 수를 취합니다.변수 테이블 이름이있는 저장 프로 시저 내에서 매개 변수가있는 쿼리의 값 사용
GetItemIDs
는그래서 너무
5를 반환 한 후 다음
205에 값을 설정합니다 12345,200GetItemIDs를 실행, 마지막으로 발행 수가 5가있을 수 있습니다 12345 SupplyChainID
현재 SP는 99,999,999를 초과하지 않는지 확인해야하므로 이와 같은 작업을 수행합니다.
IF (SELECT EIBItemID FROM ItemIDGeneration WHERE SupplyChainID = @SCID) + @DocumentCount > 99999999
BEGIN
SELECT 0
UPDATE dbo.ItemIDGeneration SET EIBItemID = @DocumentCount,
LastIssuedDate = getdate() WHERE SupplyChainID = @SCID
END
ELSE
BEGIN
SELECT EIBItemID FROM ItemIDGeneration WHERE SupplyChainID = @SCID
UPDATE dbo.ItemIDGeneration SET EIBItemID = EIBItemID + @DocumentCount,
LastIssuedDate = getdate() WHERE SupplyChainID = @SCID
END
는 내가 추가 할 필요하면 해당이 더 높은 값을 가지고 있으며,이 경우 대신 마지막 발행 번호 하나를 사용할 수 있는지 확인하기 위해 다른 테이블의 체크입니다 (이 이상 갈 것입니다 경우 0으로 돌아갑니다)
SELECT @HI_ID = MAX(EIBItemID) from
(SELECT EIBItemID FROM ItemIDGeneration WHERE SupplyChainID = @SCID
UNION ALL
SELECT ISNULL(MAX(EIBItemID),0) AS EIBItemID FROM dbo.SupplyChainID_'+ @tablename) as bigint
IF (@HI_ID) + @DocumentCount > 99999999
BEGIN
SELECT 0
UPDATE dbo.ItemIDGeneration SET [email protected],LastIssuedDate = getdate() WHERE SupplyChainID = @SCID END
ELSE
BEGIN
SELECT @HI_ID--EIBItemID FROM ItemIDGeneration WHERE SupplyChainID = @SCID
UPDATE dbo.ItemIDGeneration SET EIBItemID = @HI_ID [email protected],LastIssuedDate = getdate() WHERE SupplyChainID = @SCID
END
당신이 테이블에 테이블 이름의 일부와 같은 SupplyChainID을 가지고 볼 수 있듯이 그래서 내가 쿼리의 일부로에 전달해야합니다 알고 다음 ItemGeneration 테이블에서
뭔가 같은 임원하지만 일할 다음을 얻을 수 없다.
SET @tablename = 'dbo.SupplyChain_'[email protected]
SET @tablequery = N'SELECT ISNULL(MAX(EIBItemID),0) AS EIBItemID FROM ' + @tablename
execute @tableID = sp_executesql @tablequery
SELECT @HI_ID = MAX(EIBItemID) from
(SELECT EIBItemID FROM ItemIDGeneration WHERE SupplyChainID = @SCID
union all
SELECT @tableID) as bigint
IF (@HI_ID) + @DocumentCount > 99999999
과정은 오류하지 않습니다하지만 난 내가
declare @return int
exec @return = GetItemIDs 8001377,20
select @return as result
내가 EIBItemID이 dbo.SupplyChain_xxxxx 테이블에서 올바른 결과로 반환 참조
하지만, 다음 실행 때와 같이 내 구문 뭔가 잘못 생각 sp의 끝에서 리턴 값은 ItemIDGeneration 테이블을 기반으로 한 응답입니다 (200을 반환).
나는이 눈에 띄게 간부가 호출 될 때 올바른 결과를 반환하지만 @tableid에 0을 저장하는 생각
감사합니다. 작은 조정만으로 작동합니다. – Colster