입력으로 @subno
을 사용하고 있습니다. 그리고 홀수와 짝수를 찾아야했습니다. 16은 수정 사항이 아니며 다른 숫자 일 수 있습니다. 제 질문은 홀수와 짝수의 입력을 찾는 방법입니다.SQL Server 저장 프로 시저 : 홀수 및 홀수 값 찾기
마지막으로, subno는 임의의 위치에 점 (.)을 포함합니다. 예 : 123456.789123 "123456"의 홀수 및 짝수를 찾고 도트 (.)가 구분 기호 인 "789123"의 홀수 및 짝수를 찾아야합니다.
왼쪽에 대해 홀수를 찾았 으면 함께 정리하십시오. 일단 왼쪽에 대한 짝수를 찾으면 그것을 합계 한 다음 총 홀수 값을 총 짝수 값에 더하십시오. 그것은 오른쪽면에서도 마찬가지입니다. 예 : "789123".
도와주세요. 이것은 해결책을 찾기위한 제 2 주입니다. 각면에 대한 모든 합계 값을 찾으면 함께 곱하십시오. 예 : "123456"- 홀수 및 짝수의 합계 값 * 홀수 및 짝수의 "789123"합계 값.
수표 유효성 확인을위한 것입니다. 구독자 번호 확인 중. 계산을 통해 유효성을 확인한 후에는 계산 된 참조 x 호를 올 Y 른 검사. 자 수와 일치시켜야합니다. 그것은 비즈니스 규칙입니다. 알고리즘
create procedure ProcedureName
(@subno VARCHAR(16), --Input the 16 subscriber number
@result INT OUT,
)
as
begin
IF(LEN(@subno) <> 16)
SET @result = 1 -- INVALID RESULT
ELSE
IF(@subno % 2 = 0)
SET @result = @subno - even numbers
ELSE
SET @result = @subno --odd numbers
end
의 종류는 내 샘플 작업
-- this is the sample
create procedure ProcedureName
(
@subno VARCHAR(20), --Subscriber no
@result INT OUT, --result is invalid for 1, valid for 0
@payamt int
)
as
DECLARE @WA VARCHAR(2)
DECLARE @Weights varchar(9)
DECLARE @I INT
DECLARE @WD INT
DECLARE @WP INT
DECLARE @A INT
DECLARE @B INT
DECLARE @R INT
DECLARE @WR INT
SET @WR = 0
SET @R = 0
SET @A = 0
SET @B = 0
SET @WP = 0
SET @I = 0
BEGIN
IF (LEN(@subNo) = 7) AND (SUBSTRING(@subno,1,1) = '2') OR (SUBSTRING(@subno,1,1) = '9')
BEGIN
SET @result = 0 --VALID
END
ELSE IF(LEN(@subno) = 8) AND (SUBSTRING(@subno,1,1) = '2') OR
(SUBSTRING(@subno,1,1) = '9')
BEGIN
SET @result = 0 --VALID
END
ELSE IF(LEN(@subno) = 9)
BEGIN
SET @WA = SUBSTRING(@subno,1,2)
IF(@WA = '65')
set @result = 1 -- INVALID
else
BEGIN
SET @Weights = '12121212'
SET @WA = SUBSTRING(@subno,9,1)
SET @WD = 0
SET @I = 1
WHILE @I<9
BEGIN
SET @WP = cast(SUBSTRING(@Weights, @I,1)as int) * cast(SUBSTRING(@subno, @I, 1) as int)
IF(@WP > 9)
BEGIN
SET @A = SUBSTRING(CAST(@WP AS VARCHAR),1,1)
SET @B = SUBSTRING(CAST(@WP AS VARCHAR),2,1)
SET @WP = CAST(@A AS INT) + CAST(@B AS INT)
END
SET @WD = @WP + @WD
SET @I = @I + 1
END
SET @R = @WD % 10
IF(@R <> 0)
SET @WR = 10 - @R
ELSE
SET @WR = @R
IF(@WR <> CAST(@WA AS INT))
BEGIN
SET @result = 1 -- INVALID
END
ELSE
BEGIN
SET @result = 0 -- VALID
END
END
END
ELSE IF (LEN(@subno) = 10)
BEGIN
SET @I =1
SET @WD = 0
SET @Weights = '121212121'
SET @WA = SUBSTRING(@subno,10,1)
WHILE(@I < 10)
BEGIN
SET @WP = CAST(SUBSTRING(@Weights, @I, 1)AS INT) * CAST(SUBSTRING(@subno, @I, 1) AS INT)
IF(@WP > 9)
BEGIN
SET @A = SUBSTRING(CAST(@WP AS VARCHAR),1,1)
SET @B = SUBSTRING(CAST(@WP AS VARCHAR),2,1)
SET @WP = CAST(@A AS INT) + CAST(@B AS INT)
END
SET @WD = @WP + @WD
SET @I = @I + 1
END
SET @R = @WD % 10
IF(@R <> 0)
SET @WR = 10 - @R
ELSE
SET @WR = @R
IF (@WR<> @WA)
BEGIN
SET @result = 1 -- INVALID
END
ELSE
BEGIN
SET @result = 0 -- VALID
END
END
ELSE
SET @result = 1 -- INVALID
END
질문을 편집하고 절차 및 예상 결과를 어떻게 부르는 지 보여주십시오. –
안녕하세요, 편집을 완료했습니다. – Mikelemuel
이것은 단순히 의미가 없습니다. "나는"123456 "의 홀수 및 짝수와"789123 "의 홀수 및 짝수를 찾아야합니다. ' –