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 3226 게시물 읽기
No. 3226
프로시져 문법에 대한 몇 가지 질문
작성자
이정훈(getif)
작성일
2007-01-02 23:04ⓒ
2007-01-02 23:11ⓜ
조회수
4,927

안녕하세요.
프로시져를 처음 사용해 보는 유저 입니다.
너무 간단한 질문 같지만 책대로 되질 않아서 문의 드립니다.


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
(라는 구문은 물론 말도 안돼겠지만.. ^^;; )

같은 좀 효율적인 구문이 가능한가요?!

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

1. 

 if( @A = '-1' )

: 비교연산자는 = 하나입니다.


2.

SET @query = "SELECT * FROM MEMBER WHERE ID = '" + @ID + "' "


IF (@NAME <> '')

    SET @query = @query + "AND NAME = '" + @NAME + "' "


IF (@VAR1 <> '')

    SET @query = @query + "AND VAR1 = '" + @VAR1 + "' "


IF (@VAR2 <> '')

    SET @query = @query + "AND VAR1 = '" + @VAR2 + "' "


EXEC(@query)


이렇게 각 변수에 값이 있는 경우에만 쿼리문에 조건을 추가하는 방식이 있습니다.

조길제님이 2007-01-03 15:30에 작성한 댓글입니다. Edit

감사합니다.
큰 도움 되었습니다. ^^*

이정훈(getif)님이 2007-01-04 13:36에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3238특정날짜가 되면 자동 업데이트 하는 방법좀 알려주세요... ㅠ.ㅠ [1]
급도움필요
2007-01-04
2927
3236쿼리 좀 도와 주세요.... ㅠ.ㅠ [2]
SQL 왕초보
2007-01-03
3096
3235테이블을 합칠려구합니다. 쿼리를 어떻게 짜야하는지 봐주세여
cho
2007-01-03
2372
3226프로시져 문법에 대한 몇 가지 질문 [2]
이정훈
2007-01-02
4927
3225sql 입력 부분 이렇게 나네요 [2]
김훈
2007-01-02
6625
3224MDB에서 auto number 필드 값을 미리 알수 있나요 ?
윤진철
2006-12-30
2241
3223프로시져 매개변수 변환 [2]
김연성
2006-12-29
3077
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다