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
운영게시판
최근게시물
Oracle Q&A 31520 게시물 읽기
No. 31520
프로시져에서 where조건에 IN 파라미터 쓰는방법알려주세요
작성자
오가와
작성일
2007-08-01 21:49
조회수
2,118
CREATE OR REPLACE PROCEDURE proc_test(

 p1  IN varchar2,
 p_recordset   OUT types.cursortype
)
IS

 OPEN p_recordset FOR

 SELECT   name, grade
 FROM   table1
WHERE grade  IN (p1.....)

  ;


in 조건에 들어오는 값이 몇개인지 알수 없을경우 어떻게 처리합니까?

p1값이 001,002,003  일경우

컴마대신에 ','로 바꾸어서 넣어봤는데도 안되네요. 요렇게...   001','002','003

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

그런식으로 in절 안에 변수를 넣는것은 안됩니다.


제가 그런상황이라면..

1, 다이나믹쿼리를 쓰던지,
다이나믹쿼레에 대해서..검색을 해보심..

2. p1에 들어오는 값을 템프러리 테이블에 넣어서 사용을 하겠습니다. 

create global temporary table test명.... 해서 만들고

p1의 값을 insert 로 넣고

WHERE grade  IN (select p1 from test명) 으로 하는거죠.

템프러리 테이블은 세션이 끊어지면 데이터는 사라집니다. 템프러리에 대해서는 검색을 좀 해보세요.



저도...초짜라서.. 구체적인 설명을 잘 못하겠습니다.. 이해해주세요.

자스민님이 2007-08-01 23:30에 작성한 댓글입니다. Edit

위에분 말대로 다이나믹 sql 을 쓸수 밖에 없습니다.

야옹님이 2007-08-02 09:08에 작성한 댓글입니다. Edit

굳이 IN 을 쓰지 않아도 된다면

WHERE ',' || p1 || ',' LIKE '%,' || grade || ',%'

마농(manon94)님이 2007-08-02 09:23에 작성한 댓글입니다.

간단하게는 이런식이죠...;


p1 = '''' || REPLACE(p1, ',', ''', ''') || '''';


sql := 'SELECT name, grade ';

sql := sql || 'FROM table1 ';

sql := sql || 'WHERE grade IN ( ' || p1 || ')'; 


건승하시길...수고하세요~~

성시현(finecomp)님이 2007-08-02 09:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31524테이블 RENAME [2]
초보
2007-08-02
2341
31523안녕하세요.dbs폴더를 ftp로 copy할때 특정 파일에 대한 에러입니다.ㅜㅜ [5]
답답해요~
2007-08-02
1972
31521insert into 문에 대해서 [2]
안영진
2007-08-01
1502
31520프로시져에서 where조건에 IN 파라미터 쓰는방법알려주세요 [4]
오가와
2007-08-01
2118
31519매출 쿼리 질문 입니다. [1]
김상태
2007-08-01
1956
31517오라클 Pro*C CGI 로 connect 할때 문제점..
하얀눈
2007-08-01
925
31515[질문] lock 타입중에
나루토
2007-08-01
1913
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다