Control Panel
Write a Post
긍적적인 사고, 음식의 절제, 규칙적인 운동
H
Tag
Line
Notice
Location
Keywords
HTML5
JSP
AJAX
Algorism
SQL Server 2005 TSQL
Posted
at 2007/09/06 12:53
Filed
under
Extreming X/DataBase
TOP (<식>)
- TOP 에 변수 사용 가능
- 구문
TOP (expression) [PERCENT]
[WITH TIES]
Common Table Expression
- 명명된 테이블 식
- 구문:
WITH
(
)
AS (
)
- WITH 절은 다은에 이어지는 SELECT/INSERT/DELETE/UPDATE 구문과 한 문장임
- 단일 WITH 절에서 다중의 CTE를 하나의 T-SQL 문에 정의 가능함.
- 두 가지 유형
재귀 CTE: 쿼리에서 재귀호출이 가능하도록 해 줌
비재귀 CTE: 파생된 테이블과 뷰의 특성이 혼합된 기능임.
-
가 자신을 참조 -> 재귀
- CTE의 재귀형식
<비재귀 SELECT>
union all
- 두번째 SELECT문의 결과가 없을 때 재귀 호출이 중단됨
오류처리
@@ERROR
- 전역변수
- 마지막으로 실행된 T-SQL 문의 오류번홀르 반환함
- T-SQL 문이 성공적으로 실행된 경우 -> @@ERROR = 0
- T-SQL 문이 실행될 때마다 새로운 값이 설정됨
- 제약 사항
SQL문 다음에 매번 @@ERROR 값을 검사해야함
GOTO 문과 Label 을 사용하기 때문에 중앙 집중화된 오류처리를 구현하게 됨
트랜잭션 또는 일괄처리를 중단시키는 오류의 경우에는 오루 처리가 되지 않음.
자세한 오류 정보가 제공되지 않음.
TRY ~ CATCH
- TRY 블록 영역
begin try ~ end try 사이에 있는 코드
- CATCH 블록영역
begin catch ~ end catch 사이에 있는 코드
- TRY 블록영역 내에서 오류가 발생
실행이 관련 CATCH블록으로 이동함
- TRY...CATCH 구조는 중첩 가능함
- CATCH 블록영역 내에서 오류가 발생
중첩 try...catch 구조의 경우에는 가장 가까운 catch 블록으로 이동함
중첩 구조가 아닌 경우에는 호출자에게 오류가 반환됨
- TRY...CATCH가 포착 가능한 오류
@@ERROR 값 설정이 발생하는 모든 런타임 오류
- CATCH 블록영역에서 사용 가능한 함수
error_number() - 오류번호
error_message() - 오류 메시지
error_severity() - 오류 심각도
error_state() - 오류 상태 번호
error_line() - 오류를 발생시킨 줄 번호
error_procedure() - 오류가 발생한 저장 프로시저 또는 트리거의 이름
- CATCH 블록영역의 외부에서 실행하면 NULL이 반환됨.
TRY...CATCH가 처리할 수 없는 오류
- 경고메시지 및 정보 제공 메시지
- 데이터베이스 연결을 끊는 오류
- Attentions ( 클라이언트 인터럽트 요청 또는 손상된 클라이언트 연결 )
- KILL 문
- 컴파일 및 SQL 문 차원의 재컴파일 오류
예 :
-- 일반 select
USE AdventureWorks;
GO
BEGIN TRY
-- Table does not exist; object name resolution
-- error not caught.
SELECT * FROM NonexistentTable;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH
-- 프로시저에서 사용
-- Verify that the stored procedure does not exist.
IF OBJECT_ID ( N'usp_ExampleProc', N'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO
-- Create a stored procedure that will cause an
-- object resolution error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT * FROM NonexistentTable;
GO
BEGIN TRY
EXECUTE usp_ExampleProc
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH;
커밋 불가 트랜잭션
- TRY 블록 내에서의 트랜잭션 중단 오류
- 커밋불가 트랜잭션
커밋될 수 없는 모든 활성 트랜잭션
커밋 불가 트랜잭션에서는 오직 읽기 또는 ROLLBACK TRANSACTION만 실행가능
- 쓰기 작업 또는 COMMIT TRANSACTION은 실행 불가
트랜잭션 상태 조회
XACT_STATE()
- 트랜잭션의 상탤르 반환함
- 1 = 활성상태의 커밋 가능한 트랜잭션
- 0 = 비활성 트랜잭션
- -1 = 활성 상태의 커밋 불가한 트랜잭션
예외처리 - RAISERROR
- RAISERROR : 오류를 발생시키는데 사용됨
- RAISERROR 는 TRY 또는 CATCH 블록에서 사용함
- TRY 블록에서 RAISERROR 를 사용
심각도 11-19 인 RAISERROR 가 실행되면 CATCH 블록으로 이동함
- CATCH 블록에서 RAISERROR를 사용
RAISERROR 를 사용하여 오류를 호출자에게 반환함
오류처리 가이드
- TRY...CATCH 구조를 사용하여 오류 처리 로직을 구현할 것을 권고함
- 기존의 @@ERROR 기반의 오류처리코드를 TRY...CATCH로 대체할 것을 권고함
- 오류정보를 기록할 것을 권고함
문제점을 진단하기 위해서는 오류정보가 필요함
심각한 오류는 테이블에 기록을 남길 것을 권고함
- CATCH 블록 코드를 테스트할 것을 권고함
RANKING 함수
- RANK()
결과 집합의 각 행에 대하여 지정된 파티션 내에서 정렬기준에 의거하여 등급을 부여하는 함수
- DENSE_RANK()
결과집합의 각 행에 대하여 지정된 파티션 내에서 정렬 기준에 의거하여 연속적인 등급을 반환하는 함수
- NTILE(
)
결과 집합의 각 파티션에 잇는 행들을 지정한 개수만큼의 그룹으로 쪼개어 등급을 부여하는 함수
- ROW_NUMBER()
결과 집합의 각 행에 대하여 행의 우치 번호를 반환하는 함수
- 집계 작업에 사용 가능
- 사용자 정의 함수와 함께 사용 가능
예:
SELECT
RANK() OVER(ORDER BY CITY) AS RANK,
RANK() OVER(PARTITION BY CITY ORDER BY LASTNAME) AS PART_RANK,
DENSE_RANK() OVER(ORDER BY CITY) AS DENSE_RANK,
ROW_NUMBER() OVER(ORDER BY CITY) AS ROW_NUM,
NTILE(4) OVER(ORDER BY CITY) AS NTILE_4,
LASTNAME,
FIRSTNAME,
CITY
FROM EMPLOYEES
ORDER BY CITY, LASTNAME
- OVER 절
파티션 방식 제공
결과 집합의 행들을 정렬
페이징
예: 50에서 60까지의 주문 정보를 일자순으로 정렬
WITH OrderedOrders AS
(select SalesOrderID, OrderDate, Row_Number() OVER(order by OrderDate) as RN from SalesOrderHeader)
select * from OrderedOrders WHERE RN between 50 and 60
PIVOT
UNPIVOT
APPLY
OUTPUT
- DML 연산의 일부로서, 행을 반환하는 기능임
- 작업의 결과를 확인 가능함
"Inserted" 와 "Deleted" 를 사용하여 업데이트 전후의 데이터를 확인 가능함.
- 결과 행을 테이블 또는 변수에 저장 가능함
OUTPUT...INTO...
- 예:
USE AdventureWords;
GO
DELETE SalesShoppingCartItem OUTPUT DELETED.*;
SELECT COUNT(*) AS [Rows in Table] FROM SalesShoppingCartItem;
GO
EXCEPT 와 INTERSECT
- 두 개의 서로 다른 행 집합들을 기반으로 결과 집합을 제공하는 집합 연산자임.
- EXCEPT
첫 번째 결과 집합에는 존재하고 두번째 결과 집합에는 존재하지 않는 행들의 집합을 반환함.
- INTERSECT
양쪽 집합에 모두 존재하는 행들의 집합을 반환함.
- 전제 조건
모든 쿼리의 컬럼들의 수와 순서가 동일해야 함.
데이터 타입이 호환되어야 함
- 예 :
SELECT * FROM TABLEA EXCEPT SELECT * FROM TABLEB;
SELECT * FROM TABLEA INTERSECT SELECT * FROM TABLEB;
UNION, EXCEPT, INTERSECT 다른 T-SQL 문과 연계 사용 시 가이드
- INTO 절을 사용하여 최종 결과 집합을 테이블에 저장하고자 하는 경우에는 첫 번째 쿼리에만 INTO를 기술함.
- ORDER BY 는 SQL문의 마지막 부분에 기술함.
- GROUP BY 와 HAVING 절은 개별 쿼리에만 사용가능하며, 최종 결과 집합에는 영향을 미치지 않음.
크리에이티브 커먼즈 라이센스
이 저작물은
크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스
에 따라 이용하실 수 있습니다.
Posted
by
홍반장
2007/09/06 12:53
2007/09/06 12:53
Response
No Trackback
,
No Comment
RSS
:
http://tcbs17.cafe24.com/tc/rss/response/2649
Trackback
URL
:
http://tcbs17.cafe24.com/tc/trackback/2649
« Previous
:
1
:
...
3768
:
3769
:
3770
:
3771
:
3772
:
3773
:
3774
:
3775
:
3776
:
...
6391
:
Next »
- 홍반장
Tag Cloud
javascript
jquery
HTML5
고양이
안드로이드
android
iPhone
eclipse
phonegap
자출
seri
자바스크립트
수영
아이폰
CSS
이클립스
ipad
sencha
모바일웹
apps
긍적적인 사고, 음식의 절제, 규칙적인 운동 - 최근 공지
Notices
天下之事 不進卽退(천하지사 불진즉퇴)
회의에 빠지는 것은 나쁘지 않다. 단,...
아직 인생의 긴 경로에서 시작에 불과...
Archives
2011/10
(10)
2011/09
(46)
2011/08
(68)
2011/07
(82)
2011/06
(75)
Categories
ATOM
전체
(6391)
ATOM
생활의 발견
(4732)
ATOM
Cool
(330)
ATOM
Books
(100)
ATOM
아침편지
(2447)
ATOM
행복한경영
(1620)
ATOM
Life & 재테크
(246)
ATOM
Extreming X
(1009)
ATOM
Web_language
(324)
ATOM
App_language
(91)
ATOM
X program
(65)
ATOM
Linux
(213)
ATOM
OS_Server
(24)
ATOM
Style&Design
(70)
ATOM
DataBase
(120)
ATOM
Architect
(86)
ATOM
Gallery
(196)
ATOM
UCC
(41)
ATOM
wani's Life
(154)
ATOM
Ngio Consulting
(1)
ATOM
운동일지
(439)
ATOM
수영
(397)
ATOM
마라톤
(4)
ATOM
사이클
(30)
ATOM
Etc
(9)
Authors
홍반장
양숨
긍적적인 사고, 음식의 절제, 규칙적인 운동 - 최근 글
Recent Posts
하늘아 너는 왜 푸른 것이냐
사람들에게 가장 위험한 일은
기억 저편의 감촉
가치 있는 것들은 대개 고난이라는 포...
오래 슬퍼하지 말아요
긍적적인 사고, 음식의 절제, 규칙적인 운동 - 최근 댓글
Recent Comments
관리자만 볼 수 있는 댓글입니다.
비밀방문자 2014
부자 중국 가난한 중국인 : 중국인의 ...
wani 2011
사람의 마음을 얻는 법 - 메디치가 사...
홍반장 2011
생각하지 않는 사람들 - 드디어 다 읽...
홍반장 2011
여행하면 성공한다 - 우리는 여행하고...
홍반장 2011
긍적적인 사고, 음식의 절제, 규칙적인 운동 - 최근 트랙백
Recent Trackbacks
Calendar
«
2024/12
»
일
월
화
수
목
금
토
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
Bookmarks
* SAP *
* 한국 썬 개발자 네트워크
** DB 구축 운영 종합정보
*** 대한수영연맹 ***
*** 대한수중협회 ***
*** 유용원의 군사세계
***** 오늘의 유머
*asp101.com - ASP 참고 사이트
*DAUM 개발자 네트워크
*devarticles - 프로그래밍 참고 사이트
*JAVA-javajigi
*NAVER Open API
*RUBY a Programmer's Best Friend
*시작하는 프로그래머를 위하여
+ 시스템관리자를 위한 사이트
+++ 전략기획 +++
All of Software-전규현님
codeproject.com
design - netdiver.net
design - thefwa.com
flickr.com
imaso.co.kr
IT 용어사전
Jazz - BlueNote
jeobi.kr
ms-sql world.pe.kr
PrototypeJS
SourceForge.net: Front page news
xprogramming.com
마음의 소리
빈꿈 emptydream
와니의 북피니언
월간웹
자전거-바이키
점프 투 파이썬
조항욱대리 블로그
천종수 팀장님 블로그
토렌트
한국 developerWorks
한빛미디어-네트워크
흔들리는 젊음 서른세살의 방황기
Site Stats
Total hits:
251890
Today:
618
Yesterday:
1251
Subscribe to
RSS
articles
Subscribe to RSS responses
Subscribe to ATOM articles
Subscribe to ATOM responses