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 38572 게시물 읽기
No. 38572
프로시져 내부 WHERE 절에서 '변수' 처리 사용할때...
작성자
라클리
작성일
2011-05-27 11:27
조회수
5,987

------------------------------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE SP_TEST
(
    I_NEW_TABLE IN VARCHAR2
)
IS
V_NEW_TABLE VARCHAR(20) ;

BEGIN

    SELECT 1
    FROM TEBLE01
    WHERE  TABLE_NAME=UPPER('V_NEW_TABLE')

  END ;
/

------------------------------------------------------------------------------------------------------------------------------------------------

위와 같은 프로시져에서 WHERE 절에 사용될 변수 V_NEW_TABLE 의 경우...

원쿼테이션 (') 때문에 변수로 인식하지 못하고 그냥 문자로 인식하여 제대로 처리가 되지 않습니다.

해결책이 있는지 문의드립니다.

 

 

 

 

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

CREATE OR REPLACE PROCEDURE SP_TEST
(
    I_NEW_TABLE IN VARCHAR2
)
IS

  V_NEW_TABLE VARCHAR(20) ;
 
BEGIN
 

  -- 변수에 값을 주려면 아래와 같이 하면 됩니다.
  V_NEW_TABLE := 'Somthing';

 

  SELECT 1
    FROM TEBLE01
    WHERE  TABLE_NAME=UPPER(V_NEW_TABLE);

 

END ;
/

hopper(bunny)님이 2011-05-27 11:44에 작성한 댓글입니다.
이 댓글은 2011-05-27 11:45에 마지막으로 수정되었습니다.

네 답변 감사합니다.

하지만 변수 입력 부분은 제가 위 예제에서 빠뜨린것 뿐이고...

 

V_NEW_TABLE:=I_NEW_TABLE;

(위와 같이 사용 예정)

 

정확히 쿼리문 WHERE 절에 TABLE_NAME=UPPER('V_NEW_TABLE')

위 구문에서 쿼테이션으로 인해 변수 처리가 안되는 부분이 문제네요.

뭔가 제가 잘못하고 있는것일까요???

 

 

 

라클리님이 2011-05-27 18:08에 작성한 댓글입니다. Edit

변수 자체에 쿼테이션을 붙이면 안됩니다.  변수자체를 그대로 사용해야 합니다. 

 

SELECT 1
FROM TEBLE01
WHERE TABLE_NAME=UPPER(V_NEW_TABLE);

 

쿼테이션은 문자를 상수로 이용할 때 씁니다. 

 

SELECT 1
FROM TEBLE01
WHERE TABLE_NAME=UPPER('테이블이름');

 

 

hopper(bunny)님이 2011-05-27 22:33에 작성한 댓글입니다.

hopper(bunny)님 답변 감사합니다.

쿼테이션안에서 처리할 방법은 딱히 없나보네요.

결국 임시 테이블 생성후 스크립트문 insert, select 로 프로시져 생성하였습니다.

 

라클리님이 2011-06-01 10:26에 작성한 댓글입니다. Edit

그냥 따옴표만 빼면 해결되는거 아닌가요?

마농(manon94)님이 2011-06-01 10:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38575오라클 설치시 out of memory 가 뜹니다... [1]
설치에러..
2011-05-31
4504
38574순차적으로 증가하는 값으로 trigger 생성하기 [4]
김홍찬
2011-05-29
5609
38573sql구간 구하기 질문이요 [2]
SQL초보
2011-05-27
4226
38572프로시져 내부 WHERE 절에서 '변수' 처리 사용할때... [5]
라클리
2011-05-27
5987
38571프로시져에서 시스템 테이블 사용시 에러 (ORA-00942) [2]
라클리
2011-05-26
5380
38570for 문을 거꾸로 돌리고 싶어요ㄱ- [3]
이종민
2011-05-26
4846
38569가능할지 모르겠지만 질문 올려봅니다. [3]
최진규
2011-05-25
3841
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다