SQL문 안에서 While 문을 사용하는 방법(Begin / End 필수 !!! 덤으로 IF문까지....) | Database

while start <= loop_cnt) <-- while 조건문! start가 loop_cnt 보다 같거나 작을때까지...

 

begin   <-- 본문 시작 알림 (End 문이 나와야 한다.
  if loop_start = 1  <-- Sql 문 안에서 If문을 begin 없이 사용하면 바로 밑 한줄까지만 적용된다.

(기존의 If문의 End If가 없을 경우 처럼 바로 및 한줄만 적용되는 것은 같다. 만약 2줄이상 적용하려면,

  If loop_start = 1 begin

 (then 대신 적용하여 사용 하고 마지막 부분에 End를 사용하여 마무리 해준다.) 하고 ~~~ 끝나는 지점에 End 하고 사용한다.

    set a += 1

     set b == a

end

else begin ~~

~~~

End

    set   fdegree2 = fdegree
  else
     set fdegree2 = loop_start * 5 +1

 

    exec sp_executesql  sql1 <-- while 문이 완료되기 전에 실행되어진 결과를 일괄처리하는 문..

자세한 내용은 밑에(sql help 기능에서 참조한 것임)
 
end

 

대략적으로 이런 형식으로 진행된다.

참고 할 것은 If 문을 사용할 시 기존의(VB와 같은) 사용방식과 다른 Then 대신 Begin / End를 사용한다는 것이다.

While문 또한 조건을 형성하고 Begin으로 시작하여 End로 끝낸다. 처리 결과 내용을 반영(exec하거나)

중간에 어떤 조건에 만족 해서 나오려면 아래 예문과 같이 하면 된다.

 

 WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
   UPDATE titles
      SET price = price * 2
   SELECT MAX(price) FROM titles
   IF (SELECT MAX(price) FROM titles) > $50
      BREAK  <- 중간에  주황색 while문만 나옴. 
   ELSE
      CONTINUE <- 계속 유지
END
PRINT 'Too much for the market to bear'

-본 내용은 MS사의 SQL 설명문에서 참조 하였음-

 

 

만약 while 문이 중복 적용 된다고 한다면...

While 조건문 begin

         while 조건문  begin

                  ~~~

                  ~~

         End

 

End

 

형식으로 나열 하면된다.

 

*참조* [exec]

  • EXECUTE 문에서 실행하는 문자열은 단일 실행 계획으로 컴파일된 일괄 처리입니다.
  • sp_executesql 시스템 저장 프로시저에서 실행하는 문자열은 단일 실행 계획으로 컴파일된 일괄 처리입니다
  • *참조2* [중복 While 사용시]

  • 중복 While문 사용 시 주안점

         -. 가장위에 while문과 관련되어서 다음 while문이 적용되면, 조건문의 숫자들이 정확하게 돌아가는지 유무를 판별해야 한다.

     

    delcare d int

    ~~~

    set a = param(0)

    set b = round(convert(float, (param(1))/ convert(float,5)) + 0.499)  <-- 무조건 5로 나눈 나머지 올림처리

    set s = 1

    set d = a*5 + 1  <- 수정 (a-1)*5 + 1 

     

     While a <= b begin  <-- 만약 이 중복 while 문이 5의 배수로 나누어서 진행 될 경우

                    while s <= d begin  <-- 다음 2번째 실행은 6부터 진행되어 져야 하는 데 위에 셋팅으로 하면

                             ~~~

                                        End

                   exce ~~

    End

  •  

    MS-SQL,While
    Comment Write
    Comment List
    등록된 코멘트가 없습니다.