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 2277 게시물 읽기
No. 2277
커서질문입니다
작성자
다반향초(daban)
작성일
2005-09-05 11:07
조회수
3,167

CREATE FUNCTION dbo.Event_Total_Data(@Member_Id VARCHAR(30),@Total_Year int,@Quarter int,@Tyear int)
RETURNS int
AS
BEGIN
DECLARE @Point_Apply int
DECLARE @Plus_Minus int
DECLARE @Total_Point int
DECLARE @SQL nvarchar(300)
SET @Total_Point = 0
SET @SQL = ''
DECLARE Point_Cur CURSOR FOR

IF @Quarter = '' AND @Tyear = ''
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year
ELSE IF @Quarter !='' AND @Tyear = ''
IF @Quarter = 1
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year And (Substring(Wdate,6,2) > 1 And Substring(Wdate,6,2) < 4)
IF @Quarter = 2
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year And (Substring(Wdate,6,2) > 3 And Substring(Wdate,6,2) < 7)
IF @Quarter = 3
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year And (Substring(Wdate,6,2) > 6 And Substring(Wdate,6,2) < 10)
IF @Quarter = 4
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year And (Substring(Wdate,6,2) > 9)
ELSE
SELECT Point_Apply,Plus_Minus FROM Event_Point_Data Where Member_id=@Member_id And Left(Wdate,4)=@Total_Year And Substring(Wdate,6,2)=@Tyear
OPEN Point_Cur

FETCH NEXT FROM Point_Cur INTO @Point_Apply,@Plus_Minus

WHILE @@FETCH_STATUS = 0
BEGIN
IF @Plus_Minus = 1
SET @Total_Point = @Total_Point+@Point_Apply
IF @Plus_Minus = 0
SET @Total_Point = @Total_Point-@Point_Apply
FETCH NEXT FROM Point_Cur INTO @Point_Apply,@Plus_Minus
END

CLOSE Point_Cur
DEALLOCATE Point_Cur
RETURN(@Total_Point)
END

 

 

커서에서 동적쿼리가 먹는지요

Set @SQL = 'select '

Set @SQL = SQL + 'and '

exec (@SQL)

이런식으로요

 

IF @Quarter = '' AND @Tyear = ''

현재 이프문에서 에러가 나는데 왜그럴까요?

서버: 메시지 156, 수준 15, 상태 1, 프로시저 Event_Total_Data, 줄 13
'IF' 키워드 근처의 구문이 잘못되었습니다.

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

 

ELSE IF @Quarter !='' AND @Tyear = ''
IF @Quarter = 1

이 사이에 begin 을 해줘야 할듯..

그리고 마지막의 else는 어느 if의 else인지..

저같으면 else if 안의 if 문들을 밖으로 빼버리겠습니다만.. =_=ㅋ

else if  안의 if문을 begin ,end 로 확실히 묶어주면 되지않을까 해요.. 

(아닐지도..커서에서 if문은 써보질 않앗다는.. ``;)

voy님이 2005-09-06 12:36에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2282Job 등록시 질문 [2]
최보라
2005-09-07
1492
2280쿼리 좀 가르쳐 주세요! [3]
nigel
2005-09-06
2206
2278접속통계를 구하려는데.. [3]
이병권
2005-09-05
3670
2277커서질문입니다 [1]
다반향초
2005-09-05
3167
2272MS SQL200에서 특정 테이블만 복원하는방법 좀 알려주세요.. [2]
낙자사발
2005-09-03
2028
2270standby database... [1]
mssql
2005-09-02
1777
2269쿼리분석기에서 조건문으로돌리기 [2]
영심이
2005-09-02
1907
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다