FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird 팁&트릭
[28] 파이어버드 2 - ROWS...TO... 문법
박지훈.임프 [cbuilder] 7325 읽음    2006-12-04 07:54
인터베이승에서 파이어버드로 오면서 SQL에 first A skip B 문법이 추가되었죠? 이 문법은 B 갯수만큼을 건너뛰고 A 갯수만큼을 셀렉트할 때 애용되는 문법인데요. 좀 덜 직관적인데다 여러가지 제한점이 있기도 했습니다.

파이어버드 2.0에서 기존의 first...skip... 문법도 그대로 지원하지만, 새로운 rows C to D 문법이 추가되었습니다. C번째부터 D번째까지 가져옵니다. 단, first...skip...처럼 select 뒤의 필드 리스트 앞에 지정하는 것이 아니라 select 문의 가장 마지막, order by 보다 더 뒤에서 지정합니다.
select * from tablename order by fieldname rows 5 to 10

위와 같이 했을 경우, 5번째부터 10번째 레코드를 가져옵니다.

일단 더 이해하기 쉽고요. 또 최신 SQL 표준에서 추가된 내용이라니 아무래도 호환성 면에서도 더 좋겠죠. 그리고 파이어버드 2.0 릴리즈 노트에 따르면, union이나 서브쿼리, update, delete 문에서도 쓸 수 있다고 합니다.

그런데, 이 문법을 써보다 보니, 문서에는 써있지 않았지만, 이전의 first...skip...보다 확실히 더 좋아진 점을 발견했는데요. 기존의 first A skip B 에서는 A와 B로 스토어드 프로시저 변수를 쓸 수가 없고 상수만 가능했습니다. 물론 델파이나 C++빌더 등의 클라이언트 프로그램에서 단순히 select문만 날릴 때는 SQL 문 자체를 동적으로 만들면 되니까 문제가 안되지만, 복잡한 일련의 절차를 스토어드 프로시저로 만들어야 할 경우에는 방법이 없어서 난감했습니다.

rows C to D 문법에서는 C와 D 자리에 스토어드 프로시저 변수를 넣을 수 있습니다. 이제 전보다 훨씬 유연하게 스토어드 프로시저를 만들 수 있게 되었네요.
declare variable rowstart integer;
declare variable rowend integer;
rowstart = 5;
rowend = 10;
select * from tablename order by fieldname rows :rowstart to :rowend;

+ -

관련 글 리스트
28 파이어버드 2 - ROWS...TO... 문법 박지훈.임프 7325 2006/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.