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
운영게시판
최근게시물
Sybase Q&A 631 게시물 읽기
No. 631
procedure 에서 파라미터에 따른 where절 생성
작성자
진미
작성일
2003-02-14 16:10
조회수
4,468

procedure를 만드는데요..

exec sp_Test ?,?,?,?,?

이런식으로 실행이 될 프로시저 입니다.

create procedure sp_Test @test1 varchar(1), @test2 varchar(1), @test3 varchar(8), @test4 varchar(8), @test5 varchar(50)

as

...

 

이렇게 생성을 할때요..

@test1, @test2 등의 파라미터에 따라 where절을 만들려고 합니다..

 

앞부분에서 쿼리를 만들어서 #temp1이라는 템프테이블에 데이타를 저장하구요...

@test1에 값이 있으면

select * #temp1 where column1 = @test1을

 

또 @test2에 대해서도 값이 있으면 조건절에 덧붙이고 이런식의 쿼리를 할려고 합니다..

 

문제는... @test1, @test2, @test3.. 의 값들이 있을수도 있고, 없을수도 잇는데 없으면 전부를 있으면 그 값만을 가져올려고 하는거지요..

 

생각하기로는... 있는 값들에 대해서..조건절만 우선 만들고

select * from #temp1 문장에

뒤에 where절을 통째로 붙이는게 제일 좋을거같은데..

이게 잘 안 됩니다...

 

그러니깐...

strWhere = 'where column1 = @test1 and column3 = @test3 and column4 = test4' 이런식으로 만들고

select * from #temp1 + strWhere 이런식으로요..

위의 조건절은 @test1, @test3, @test4의 값들이 ''이 아닌 경우에 해당하겠지요....

 

조언 부탁드립니다...

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

이런 경우 dynamic sql을 사용해야 하는데요...

별로 추천하고 싶지는 않습니다..

 

왜냐면 프로시져를 쓰는 장점이 없기 때문이죠...

쿼리가 어떻게 생성될지 모르기때문에.. 쿼리플랜을 갖지 못하는 프로시져가 되니까요...

 

그리고 dynamic sql은 variable binding이 안됩니다...

 

exec(@sql) 이런 식으로 수행하면 됩니다..

jinuki님이 2003-02-14 17:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
634쿼리실행시 이상한 에러가 납니다.. 원인좀 알려주세요.. ^^ [1]
황선영
2003-02-25
4371
633oledb의 쿼리 문제점 [1]
김경용
2003-02-21
4038
649┕>Re: oledb의 쿼리 문제점
지연
2003-03-10 16:05:00
3750
632sybase oledb provider 를 구합니다..
김경용
2003-02-21
4187
631procedure 에서 파라미터에 따른 where절 생성 [1]
진미
2003-02-14
4468
630backup문의 [2]
김학만
2003-02-11
3803
629sybase ODBC 셋팅방법 쫌 아려주세요 [3]
최덕영
2003-02-11
4999
628비베 RDO 를 이용한 DB 서버 연결 방법쫌
최덕영
2003-02-11
3298
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다