database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 1742 게시물 읽기
No. 1742
프로시져 에러를 잡을 수가 없네요...도와주세요...
작성자
코더안
작성일
2005-01-17 17:49
조회수
3,833

CREATE PROCEDURE board_list
@intPageSize int,
@intNowPage int,
--@strBoard varchar(20),
@intTotalCount int output,
@intTotalPage int output
AS

Begin
Declare @sql varchar(1000)

set nocount on

Select @intTotalCount = count(b_idx) from Board
Select @intTotalPage = Ceiling(CAST(count(b_idx) as Float)/@intPageSize) from Board

Set @sql = ' Select Top ' + @intPageSize
Set @sql = @sql + ' b_idx, b_bid, b_seq, b_level, b_title, b_content, b_pass, b_writer, b_regday, b_visited, b_part1, b_part2 '
Set @sql = @sql + ' from Board where b_seq <= (Select min(b_seq) from ('
Set @sql = @sql + ' Select Top '+((@intNowPage - 1) * @intPageSize) +1 + ' b_seq from Board order by b_seq Desc ) As A)'
Exec (@sql)

set nocount off

End

 

구문은 위에 처럼 만들었는데...

다음과 같은 에러가 나타납니다...

 

varchar 값 ' Select Top '을(를) int 데이터 형식의 열로 변환하는 중 구문 오류가 발생했습니다.

 

고수님들...

무엇이 문제인지 알려주세요~!!

 

이 글에 대한 댓글이 총 2건 있습니다.

해결했습니다...

convert(varchar(20), (((@intNowPage - 1) * @intPageSize) +1 ))

로 숫자를 전체적으로 문자열로 변형시켰더니 잘 되네요...

 

근데...

일반쿼리보다 sp로 실행시킨 것이 실행속도가 더 느리게 나오는데

뭐가 문제인지 또 모르겠네요...

20만건 정도로 테스트를 해봤더니...

쿼리로만 할 땐   0.141 초가 나오는데...

sp로 하니  0.406 초가 나옵니다.

클러스터드 인덱스는 seq에만 주었습니다.

 

코더안님이 2005-01-17 20:08에 작성한 댓글입니다. Edit

sp가 일반query보다 느린것은 원래 느리기 때문입니다..

 

단순한 query라면, 당연히 sp가 더 느립니다..

 

sp는 단순한 query를 위한 것이라기보다는,

반복되어 사용되어질 업무를 하나의 로직단위로써 작성해서

사용하는 거죠..

 

sp가 일반 query보다고 빠르다고 하는 것은..

일반 query를 사용해서 업무처리를 할 경우에는 비능률적인

network과정이 없어지기 때문입니다.

 

또한, 한번 compile된 sp는 다시 compile되지 않고 바로 실행되기 때문이죠.. 물론 일반 query도 메모리상에 있다면, 구문해석 등은 하지 않습니다..

 

sp가 일반query보다 느린 것은 사실입니다..

하지만, sp와 일반 query와는 비교될 수 없을 정도로 쓰임새가 다르죠..

참고로, application에서의 tuning 효과보다는 database에서의 tuning효과가 몇 배로 뛰어납니다.. 속도, 보안, 데이타무결성...

 

참고로..

sp는 critical한 program이기 때문에 100% 명확한 설계를 바탕으로 작성하는 습관을 가지는게 좋겠죠..

그럼..

길가는 나그네..님이 2005-01-18 16:23에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1745데이터를 가져올때 [3]
오혜인
2005-01-21
3386
1744트리거의 발생 시점이 궁금합니다. [3]
아도니스
2005-01-19
3872
1743Sql 초보 질문입니다. [2]
노승현
2005-01-18
7209
1742프로시져 에러를 잡을 수가 없네요...도와주세요... [2]
코더안
2005-01-17
3833
1740bcp로 데이타 out시 일부 문자가 깨집니다.
dba
2005-01-14
2637
1739tree구조를 표현하려구하는데요. [1]
sean
2005-01-12
4385
1738트랜젝션로그가 ...
김학만
2005-01-11
2683
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다