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 41650 게시물 읽기
No. 41650
컬럼에서 불러온 계산식 그대로 계산하는법이 있나요?
작성자
장만수(동동프린스)
작성일
2018-11-04 15:54:52
조회수
79

 안녕하세요

실제 코드는

ccc = a.aaa × b.bbb 라는 계산식으로 패키지 내에서 사용중인데

조건에 따라 계산식이 변경될때 소스 수정을 안하게 하려고

db 컬럼에 a.aaa×b.bbb라고 넣어놓고

패키지 내에서 계산식을 그대로 불러와서 

ccc 변수에 넣고 싶은데 도무지 방법이 떠오르질 않네요

계산식은 조건에 따라 바뀌는데 불러와서 계산하는 방법이 있을까요?

고수분들의 조언 부탁드립니다.

감사합니다.

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

SELECT str
     , TO_NUMBER(
       dbms_xmlgen.getxmltype(
       'SELECT ' || str || ' FROM dual'
       ).Extract('//text()')
       ) AS result
  FROM (SELECT '120 * 30' str FROM dual)
;

마농(manon94)님이 2018-11-05 10:41:30에 작성한 댓글입니다.
이 댓글은 2018-11-05 10:41:51에 마지막으로 수정되었습니다.

마농님 답변 감사합니다.

해당 쿼리는 사이트 검색으로 본적이 있는데 적용이 안되서 보류했던 쿼리였네요.

쿼리를 DB에서 아래처럼 조회를 하고 

v_query := 'a.aaa * b.bbb';

v_sql := 'SELECT ' || v_query || ' FROM DUAL';

EXECUTE .... v_sql ....;

이런식으로 사용하려고 했는데

어떻게 하든 계산식 자체를 문자 변수에 넣는 순간 컬럼에 있는 값을 불러오는게 아니고

a.aaa, b.bbb 문자열 자체로 가져와서 답답한 상황입니다.

아래처럼 되버리더라구요.

SELECT str

     , TO_NUMBER(
       dbms_xmlgen.getxmltype(
       'SELECT ' || str || ' FROM dual'
       ).Extract('//text()')
       ) AS result

  FROM (SELECT 'a.aaa*b.bbb' str FROM dual)

;

 

 

장만수(동동프린스)님이 2018-11-06 18:48:18에 작성한 댓글입니다.

FROM 절에 a 와 b 테이블이 있어야죠.

 

SELECT str
     , TO_NUMBER(
       dbms_xmlgen.getxmltype(
       'SELECT ' || str
       || ' FROM (SELECT 3 aaa FROM dual) a'
       ||     ', (SELECT 4 bbb FROM dual) b'
       ).Extract('//text()')
       ) AS result
  FROM (SELECT 'a.aaa*b.bbb' str FROM dual)
;

마농(manon94)님이 2018-11-07 09:37:55에 작성한 댓글입니다.
이 댓글은 2018-11-07 10:08:36에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41653문자 치환에 대해서 질문 드립니다. [6]
그림자가면
2018-11-09
135
41652합계 구하는 쿼리 질문 입니다. [2]
구휘
2018-11-08
70
41651데이터베이스 일대일 관계 릴레이션 변환 질문합니다. [1]
SYJ
2018-11-04
87
41650컬럼에서 불러온 계산식 그대로 계산하는법이 있나요? [3]
장만수
2018-11-04
79
41649가로 데이터 세로 표현 질문드립니다. [2]
백기열
2018-11-01
85
41648출력되는 두 row 비교 문의드립니다. [6]
k62511
2018-10-31
120
41647pl/sql YYYYMM(년,월)이 정확한 값일때만 insert [2]
dndjsxka
2018-10-30
75
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.074초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다