안녕하세요.
프로시져를 처음 사용해 보는 유저 입니다.
너무 간단한 질문 같지만 책대로 되질 않아서 문의 드립니다.
1.
CREATE procedure [dbo].[TEST]
@A varchar(20)
as
begin -- 프로시져 시작
Set NoCount On
if( @A == '-1' )
begin
print 'test'
end
END --프로시져 종료
실행시키면
메시지 102, 수준 15, 상태 1, 프로시저 TEST, 줄 19
'=' 근처의 구문이 잘못되었습니다.
이라고 에러가 납니다.
A가 B이면.. 이라는 구문이 if( @A == '-1' ) 가 아닌가요?!
연산자 == 이 아니라면 어떤 연산자를 사용해야 하나요?!
2.
***********************************************/
CREATE procedure [dbo].[TEST]
@ID varchar(20),
@NAME varchar(20)
as
..로 시작되는 프로시져가 있을 때 @NAME 이 공백값 (String.Empty) 일때와 그 외의 경우를 구분해서 쿼리를 날리려고 할때
NAME값이 공백이면
SELECT * FROM MEMBER WHERE ID=@ID
공백이 아니면
SELECT * FROM MEMBER WHERE ID=@ID AND NAME LIKE @NAME
이라는 구문을 사용하고 싶습니다.
이게 변수 하나 이니까
두가지 경우가 나오는데
공백일때는 where절에 넣지 말고 아닐때는 넣으려는 경우에
변수가 2개이면 4가지의 QUERY가
4개명 16가지의 QUERY가 나오는데
일일이 쿼리를 다 만들어야 하나요?!
아니면
SELECT * FROM MEMBER WHERE ID=@ID AND
IF( @NAME != '' )
BEGIN
NAME LIKE @NAME
END
(라는 구문은 물론 말도 안돼겠지만.. ^^;; )
같은 좀 효율적인 구문이 가능한가요?! |