반응형
cursor 문에 조건문을 넣고 싶은 경우가 있다.
그런데 아래 처럼 if 문을 사용하면 에러가 난다.
declare @cursor cursor
set @cursor = cursor for
if (@test <> '')
begin
select * from table1
where test = @test
end
else
begin
select * from table1
end
open @cursor
...
꼭 if 문을 쓰고 싶다면 if 문 안으로 @cursor 정의를 넣어야 한다.
declare @cursor cursor
if (@test <> '')
begin
set @cursor = cursor for
select * from table1
where test = @test
end
else
begin
set @cursor = cursor for
select * from table1
end
open @cursor
...
그런데 이렇게 하면 조건이 많아질 수록 비슷한 쿼리를 계속 반복해야 한다.
이런 경우 아래와 같이 처리하면 간단해진다.
declare @cursor cursor for
select * from table1
where (isnull(@test, '') = '' or test = @test)
open @cursor
...
이렇게 하면 된다.
반응형
'프로그래밍 관련 유용한 자료 > SQL' 카테고리의 다른 글
MS-SQL 마이그레이션 - mdb 를 가져오기 할 때 130 관련 에러 처리 방법 (0) | 2021.05.11 |
---|---|
MS-SQL 에서 느린 쿼리 찾기 (0) | 2021.05.08 |
MS-SQL 에서 DB 복구 중 이라고 나올 때 해결 방법 (0) | 2021.05.06 |
MS-SQL 에서 DB 복구 보류 중 이라고 나올 때 해결 방법 (0) | 2021.05.02 |
MS-SQL 에서 DB가 주의 대상인 경우 해결 방법 (0) | 2021.05.02 |