[MS-SQL] WHILE(Transact-SQL)

SQL 문 또는 문 블록의 반복 실행을 위한 조건을 설정합니다. 문은 지정된 조건이 true인 한 반복적으로 실행됩니다. WHILE 루프 내의 문 실행은 BREAK와 CONTINUE 키워드를 사용하여 루프 내에서 제어할 수 있습니다.

Transact-SQL 구문 표기 규칙

구문

------------------------------------------------------------------------------------------

WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
{ sql_statement | statement_block }

------------------------------------------------------------------------------------------



주의
둘 이상의 WHILE 루프가 중첩된 경우, 내부 루프에 BREAK가 있으면 현재 루프를 종료하고 한 단계 바깥쪽 루프로 이동합니다. 먼저 내부 루프의 끝 이후에 있는 모든 문이 실행된 다음 바깥쪽 루프가 다시 시작됩니다.

인수
Boolean_expression

TRUE 또는 FALSE를 반환하는 식입니다. 부울 식에 SELECT 문이 포함된 경우에는 SELECT 문을 괄호로 묶어야 합니다.

{sql_statement | statement_block}

문 블록에 정의된 Transact-SQL 문이나 문 그룹입니다. 문 블록을 정의하려면 흐름 제어 키워드인 BEGIN 및 END를 사용하십시오.

BREAK

현재 위치에 해당하는 WHILE 루프를 종료합니다. 루프의 끝을 표시하는 END 키워드 다음에 있는 모든 문은 그대로 실행됩니다.

CONTINUE

CONTINUE 키워드 다음의 모든 문을 무시하고 WHILE 루프가 다시 시작되도록 합니다.



1. 중첩된 IF...ELSE 및 WHILE에서 BREAK 및 CONTINUE 사용
다음 예에서는 제품의 평균 정가가 $300 미만인 경우 WHILE 루프가 가격을 두 배로 한 다음 최대 가격을 선택합니다. 최대 가격이 $500 이하인 경우 WHILE 루프가 다시 시작되어 가격을 다시 두 배로 만듭니다. 이 루프는 최대 가격이 $500를 초과할 때까지 가격을 계속 두 배로 만든 다음 WHILE 루프를 종료하고 메시지를 출력합니다.


------------------------------------------------------------------------------------------

USE AdventureWorks;
GO
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear';

------------------------------------------------------------------------------------------

2. 커서가 있는 쿼리 내에서 WHILE 사용
다음 WHILE 구문은 AdventureWorks 데이터베이스에 있는 모든 테이블의 행 개수를 반환합니다. WHILE 구문은 커서와 함께 사용되는 @@FETCH_STATUS 함수의 반환 값을 테스트합니다. @@FETCH_STATUS는 -2, -1 또는 0을 반환할 수 있기 때문에 3가지 경우를 모두 테스트해야 합니다. 쿼리가 실행된 이후에 커서 결과로부터 행을 삭제한 경우에는 해당 행을 건너뜁니다. 성공적으로 인출(0)된 경우 BEGIN...END 루프 내의 SELECT가 실행됩니다.


------------------------------------------------------------------------------------------

USE AdventureWorks;
GO
DECLARE tnames_cursor CURSOR
FOR
SELECT s.name + '.' + t.name
FROM sys.tables AS t
JOIN sys.schemas AS s ON s.schema_id = t.schema_id;
OPEN tnames_cursor;
DECLARE @tablename sysname;
FETCH NEXT FROM tnames_cursor INTO @tablename;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
SELECT @tablename = RTRIM(@tablename);
EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '
+ @tablename );
PRINT ' ';
END;
FETCH NEXT FROM tnames_cursor INTO @tablename;
END;
CLOSE tnames_cursor;
DEALLOCATE tnames_cursor;

------------------------------------------------------------------------------------------
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 12:03 2009/01/28 12:03
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3934

[MS-SQL] GOTO(Transact-SQL)

실행 흐름을 지정된 레이블로 변경합니다. GOTO 다음에 이어지는 Transact-SQL 문을 건너뛰고 지정된 레이블에서 처리를 계속 이어갑니다. GOTO 문과 레이블은 프로시저, 일괄 처리, 문 블록 등 어디에서나 사용할 수 있습니다. GOTO 문은 중첩될 수 있습니다.

구문
------------------------------------------------------------------------------------------

Define the label: label : Alter the execution:
GOTO label

------------------------------------------------------------------------------------------

주의
GOTO는 조건부 흐름 제어 문, 문 블록 또는 프로시저 내에서 사용할 수 있지만 일괄 처리 밖에 있는 레이블로 이동할 수 없습니다. GOTO 분기는 GOTO 전후에 정의된 레이블로 이동할 수 있습니다.

인수
label
GOTO의 대상이 해당 레이블인 경우 처리가 시작되는 지점입니다. 레이블은 식별자 규칙을 따라야 합니다. 레이블은 GOTO 사용 여부에 관계 없이 주석을 기록하는 방법으로 사용될 수 있습니다.

사용 권한
GOTO 권한은 모든 유효한 사용자에게 기본적으로 부여됩니다.


다음 예에서는 WHILE 사용의 대안으로 GOTO 루핑을 보여 줍니다.

참고:
tnames_cursor 커서는 정의되지 않습니다. 이 예는 설명을 위해 작성한 것입니다.

------------------------------------------------------------------------------------------

USE AdventureWorks;
GO
DECLARE @tablename sysname
SET @tablename = N'Person.AddressType'
table_loop:
IF (@@FETCH_STATUS <> -2)
BEGIN
SELECT @tablename = RTRIM(UPPER(@tablename))
EXEC ('SELECT ''' + @tablename + ''' = COUNT(*) FROM '
+ @tablename )
PRINT ' '
END
FETCH NEXT FROM tnames_cursor INTO @tablename
IF (@@FETCH_STATUS <> -1) GOTO table_loop
GO

------------------------------------------------------------------------------------------
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 12:00 2009/01/28 12:00
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3933

2009 구정연휴의 추억 - 남해군

남해 내려가는길 - 인삼랜드 휴개소



남해 해성중/고등학교






저녁





성묘다녀오는 길.






남용이 아들~






http://map.naver.com 으로 본 남해~!!!

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 09:53 2009/01/28 09:53
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3932

당당함이 이 시대 리더의 새로운 책무

회사마다 지휘봉을 새로 잡은 팀장들과 경영자들이 일을 시작하는 시절이다. 그러나 의욕은 넘치지만 두려움도 많다. 최악의 경제 상황이라는데 과연 실적을 낼 수 있을까. 어깨가 축 늘어진 직원들을 어떻게 끌고 갈 수 있을까. 신임 리더들이여,그러나 걱정 마시라 .전장에서 두려움 없는 장군은 없다. 경쟁사의 리더인 그도 떨고,또 다른 회사의 잘 나가는 임원인 그녀도 떨고,당신도 떨고 있는 것이다. 다만 승리라는 목표가 부담이 된다면 당신이 해야 할 일이 있다. 바로 긍정의 에너지를 전파하는 것이다.

우리 사회의 경영자들은 리더십을 길러볼 틈도 없이 바쁘게 지내다가 어느날 갑자기 지도자의 지위에 오른다. 그래서 누구나 할 것 없이 리더십에 관해서는 스스로 부족하다고 여기는 경향이 있다. 리더십에 관한 책을 읽을 시간도 없고,읽어도 큰 보탬이 안된다. 다행히 마음만 잘 먹으면 금방 체득할 수 있는 리더십이 있다.

'로마인 이야기'에서 카르타고의 영웅 한니발을 패퇴시킨 로마의 명장 스키피오. 작가 시오노 나나미는 항상 수많은 사람들이 따랐던 스키피오를 "참,세레노(sereno)한 사람"이라고 평했다. 세레노는 이탈리아 말로 밝고 맑다는 뜻이다. 세레노한 사람은 너무나 긍정적이고 밝아서 주위에 좋은 영향을 주는 리더를 일컫는다.

나나미는 이렇게 설명한다. "대부분의 사람들은 누구나 상처를 갖고 산다. 그래서 상처 하나 없어 보이는 밝은 사람에게 마음이 끌리는 것이다. 해바라기가 태양을 향하듯이…."

회사에서 긍정의 힘이 필요한 이유는 부정적인 에너지가 훨씬 전파력이 빠르기 때문이다.

예를 들면 사장이 프로 정신을 강조한 조회가 끝난 직후 누군가가 "어휴,또 저 소리네.그래 봐야 달라지는 것 있나"하는 말을 하면 회사 분위기는 엉망이 되고 마는 것을 쉽게 볼 수 있다.

특히나 불황기를 맞아 구조조정까지 해야 한다면 각종 루머와 뜬소문이 돌면서 서로 못 믿게 되고,그 결과 미래에 대한 불안감이 커지는 악순환이 회사에서 빚어질 수밖에 없다. 그들의 마음을 잡는 유일한 방법이 희망을 주는 리더의 말 한마디다.

사회 곳곳에서 부정적인 에너지가 기승을 부릴 경제위기 시대다. 긍정적인 리더만큼 힘이 되는 사람은 없다. 당신이 밝고 맑게 웃어야 한다. 당신이 '할 수 있다'고 떠들고 다녀야 한다.

세레노 리더는 누구든 언제든 마음만 먹으면 될 수 있다. 속으로 떨어도 절대 부하들 앞에서 떨지 말라.
당당함이 이 시대 리더의 새로운 책무다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 09:52 2009/01/28 09:52
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3931

소매업은 교육산업이다.
같은 것을 반복적으로 지적해야 점포수준을 겨우 올릴 수 있다.
그 수준을 유지하거나 더욱 높이기 위해서는
매번 같은 내용일지라도 계속 지적해야 한다.
절대로 다이렉트 커뮤니케이션을 그만두지 않을 것이다.

- 세븐 일레븐, 스즈키 도시후미 회장



‘필사적 커뮤니케이션’이라는 말이 있습니다.
매사에 어떤 목표를 이루려면
자신의 생각을 필사적으로 전달해야 한다는 개념입니다.
그렇지 않으면 사람이나 조직은 움직이지 않습니다.

도요타에서는 필사적으로 끈질기게 전달하고 있는가를
항상 경계하고자 하는 취지에서
필사적 커뮤니케이션이라는 말을 자주 사용합니다.
(‘끈질긴 경영’에서 인용)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 09:33 2009/01/28 09:33
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3930

집중력

위대한 업적을 남긴 사람들의
삶에는 한 가지 공통점이 있답니다.
바로 고집스러울 만큼 강한 집중력을 가졌다는 거예요.
마치 레이저 불빛처럼 한 가지 목표를 향해 달려갑니다.
그들은 목표를 이루기 전까지 단 한 치의
곁눈도 팔지 않습니다.


- 켄 블랜차드 외의《춤추는 고래의 실천》중에서 -


* 집중력은 정신력과도 통합니다.
자신이 세운 선한 목표를 끝까지 이어가는 힘,
자신의 모든 시간과 삶을 통째로 걸고 곁눈 팔지 않는 힘,
그래서 때로는 경외감마저 불러 일으키는 것,
그것이 바로 무서운 정신력이고
집중력입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 09:32 2009/01/28 09:32
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3929

설연휴 후 첫 수영

1월달 동안은 너무 쉬었다.

덕분에 몸무게는 90kg을 뛰어넘고.. 드디어...

다시 시작해야겠다.

오늘 아침에는 왠일로 5시 40분 알람이 울리기 전에 눈을 뻔쩍~!

수영장으로~ ㅋㅋ

6시 10분에 입수

킥판을 잡고, 크롤 발차기 10바퀴(500m)~ 헐~

자유형으로 한바퀴씩 몇 차례 돌다가 이만 헬스장으로.

윗몸일으키기, 등배운동, 다리 들기 의 로테이션 15회씩 각 3세트

치닝 80kg 15회 3세트

측면 삼각근 운도 3kg 아령 15회 3세트

이것저것 조금 하다가 무리하지 말고, 샤워장으로 갔다.

간만에 하니 힘이 좀 남는듯.

뭐 내일부터 강습 들어가면 한층 빡세지겠지?

빠지지마고 꾸준하게~

(^________^)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/28 09:27 2009/01/28 09:27
Response
No Trackback , a comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3928


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2009/01   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Statistics Graph

Site Stats

Total hits:
182215
Today:
211
Yesterday:
506